Android筆記

學習Android過程當中的一些筆記

手機返回鍵監聽

  • 若是在此方法中不調用super.onBackPressed()方法,則不會執行頁面的返回操做。
    @Override
    public void onBackPressed() {
       Toast.makeText(getApplicationContext(), "onBackPressed", Toast.LENGTH_SHORT).show();
       super.onBackPressed();
    }

    參考文章java

ListView中使用CheckBox選擇狀態混亂問題解決方法

  • 在數據bean中添加一個選擇狀態的屬性,在點擊勾選框的監聽中設置對應值
  • 而後在後面設置每一個item的多選框選擇狀態便可。
    onCheckedChangeListener{
      if (isChecked) {
      bean.setCheckedType(1);
      } else {
      bean.setCheckedType(0);
      }
    }
    holder.deleteCheckbox.setChecked( bean.getCheckedType() == 1) ;

使用註解定義接口返回的名稱

@SerializedName("tname") // 這是接口返回的字段名稱
private String name; // 這是本身定義的名稱

使用Gson解析List類型的json格式數據

List<Bean> list = new Gson().fromJson(jsonStr, new TypeToken< List<Bean>>(){}.getType());

TextView粗體

android:textStyle= "bold"

關掉所要到的界面中間的activity

intent.setFlags( Intent .FLAG_ACTIVITY_CLEAR_TOP);

LinearLayout點擊變換背景顏色

android:clickable="true"

<item
android:drawable="@drawable/register_btn_pressed"
android:state_focused="true"/>
<item
android:drawable="@drawable/register_btn_pressed"
android:state_pressed="true"/>
<item android:drawable="@drawable/register_btn_normal"/>

ListView嵌套ListView,itemClick失效

設置父ListView的最外層佈局中加入android

android:descendantFocusability= "blocksDescendants"

取消子ListView控件的焦點

listview.setFocusable(false) ;
listview.setClickable(false) ;

設置透明度

android:alpha="0.5"

去除Button邊框陰影

style="?android:attr/borderlessButtonStyle"

三星機型調用系統相機後,會出現自動旋轉照片的問題,詳細解決方法

https://github.com/LengM/MyApplication/blob/master/app/src/main/java/com/yng/ming/myapplication/util/img/PictureUtil.javagit

對於開關按鈕,不建議設置禁止雙擊,可能會出現實際狀態和按鈕狀態不符問題

singleLine過期替代

EditText:github

android:inputType= "text"
android:lines= "1"

button默認英文大寫

button將默認英文大寫除去json

android:textAllCaps= "false"

解決ListView的item點擊失效問題

在Item佈局的根佈局加上app

Android:descendantFocusability=」blocksDescendants」

解決ScrollView嵌套ListView運行後最早顯示出來的位置不在頂部而是中間問題

listView.setFocusable(false) ;

狀態欄設置

// 透明狀態欄
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  Window window = getWindow();
  window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
   | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
   | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
  window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
  //設置狀態欄的顏色
  window.setStatusBarColor(Color.BLACK);
  window.setNavigationBarColor(Color.BLACK);
}

TextView文字顏色沒法設置

getContext().getResources().getColor(textColor)

include引入toolbar不顯示,或出現空指針狀況

緣由是view值爲null,從新給一下值便可less

if ( null == view) {
  view = getView();
}

設置小鍵盤迴車按鈕

android:imeActionLabel= "搜索"
android:imeOptions="actionSearch"

搭配ide

et_address.setImeOptions( EditorInfo.IME_ACTION_SEARCH);
et_address.setOnEditorActionListener( new TextView.OnEditorActionListener(){});

Android去除EditView自動焦點獲取

將EditText的父級控設置成函數

android:focusable= "true"
android:focusableInTouchMode= "true"

ImageView圖片顯示不全可將屬性調整以下

android:scaleType= "centerCrop"

防止dialog窗體泄露(WindowLeaked)

@Override
public void onAfter() {
super.onAfter();
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
}

設置適配屏幕(當本身的標題欄被頂部狀態欄覆蓋時使用)

android:fitsSystemWindows= "true"

PullToRefreshListView的layout_width、layout_height屬性必須是match_parent,不然數據將沒法顯示

PullToRefreshListView刷新:佈局

onRefreshComplete() ;

隱藏軟鍵盤

InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE) ;
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0) ;

DatePicker日期控件設置不可輸入

android:descendantFocusability= "blocksDescendants"

設置按鈕不可點擊

btn_start.setEnabled(false) ;

包名與簽名

包名不一致:系統會認爲是個新的軟件,這就不算升級了
簽名不一致:系統會提示先卸載以前安裝的版本,才能繼續安裝新的

小提示框

Toast .makeText( context,"", Toast .LENGTH_SHORT) .show();

啓動service

startService( new Intent( DriverActivity.this, LocationService.class)) ;

使用startService啓動的service會無限期運行下去, 只有在外部調用Context的stopService或Service內部調用Service的stopSelf方法時,該Service纔會中止運行並銷燬

若從圖庫選擇照片錯誤,路徑不對

Intent intent1 = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

隱藏EditText中的下劃線

android: background= "@null"

圖片裁剪(在處理相機或相冊返回時能夠調用)

public void startCut(Uri path) {
Intent intent = new Intent( "com.android.camera.action.CROP");
intent.setDataAndType(path, "image/*");
intent.putExtra( "crop", "true");
// aspectX aspectY 是寬高的比例
intent.putExtra( "aspectX", 4);
intent.putExtra( "aspectY", 4);
// outputX outputY 是裁剪圖片寬高
intent.putExtra( "outputX", 300);
intent.putExtra( "outputY", 300);
//裁剪完成的圖片有可能會出現黑邊,添加如下兩個參數便可
intent.putExtra( "scale", true); //黑邊
intent.putExtra( "scaleUpIfNeeded", true); //黑邊
intent.putExtra( "return-data", true);
startActivityForResult(intent, PHOTO_CUT_CODE);
}

設置TextView顯示一行超過部分以..顯示

android:ellipsize= "marquee"
android:maxEms= "10"
android:lines= "1"

設置失效時,緣由是超過的首要校驗條件是TextView佈局的寬度,若是是match_parent而且很寬的話,該效果會「失效」

設置文本2行顯示,多出部分省略號

tv_content .setMaxLines(2);
tv_content .setEllipsize( TextUtils .TruncateAt .END);

刷新ListView

adapter.notifyDataSetChanged() ;

ScrollView去除邊緣陰影(邊緣樣式,上下邊緣陰影)

android:overScrollMode="never"

EditText添加此屬性後,輸入時,底部的佈局會懸浮在軟鍵盤上方

android:scrollbars="vertical"

輸入框的數據因爲複用致使數據顯示混亂:在adapter裏面的onBindViewHolder函數中使用

// 強行關閉複用
holder.setIsRecyclable(false);
相關文章
相關標籤/搜索