
Android常用小知识
手机返回键监听
如果在此方法中不调用super.onBackPressed()方法,则不会执行页面的返回操作。
@Override public void onBackPressed() { Toast.makeText(getApplicationContext(), "onBackPressed", Toast.LENGTH_SHORT).show(); super.onBackPressed(); }
参考文章
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: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.java
对于开关按钮,不建议设置禁止双击,可能会出现实际状态和按钮状态不符问题
singleLine过时替代
EditText:
android:inputType= "text" android:lines= "1"
button默认英文大写
button将默认英文大写除去
android:textAllCaps= "false"
解决ListView的item点击失效问题
在Item布局的根布局加上
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,重新给一下值即可
if ( null == view) { view = getView(); }
设置小键盘回车按钮
android:imeActionLabel= "搜索" android:imeOptions="actionSearch"
搭配
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);
三阳
0 条评论
三阳
宣传栏
目录
手机返回键监听
如果在此方法中不调用super.onBackPressed()方法,则不会执行页面的返回操作。
@Override public void onBackPressed() { Toast.makeText(getApplicationContext(), "onBackPressed", Toast.LENGTH_SHORT).show(); super.onBackPressed(); }
参考文章
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: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.java
对于开关按钮,不建议设置禁止双击,可能会出现实际状态和按钮状态不符问题
singleLine过时替代
EditText:
android:inputType= "text" android:lines= "1"
button默认英文大写
button将默认英文大写除去
android:textAllCaps= "false"
解决ListView的item点击失效问题
在Item布局的根布局加上
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,重新给一下值即可
if ( null == view) { view = getView(); }
设置小键盘回车按钮
android:imeActionLabel= "搜索" android:imeOptions="actionSearch"
搭配
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);