學習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"
三星機型調用系統相機後,會出現自動旋轉照片的問題,詳細解決方法
對於開關按鈕,不建議設置禁止雙擊,可能會出現實際狀態和按鈕狀態不符問題
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);