Android常用小知识

亡羊补牢
• 阅读 1756

手机返回键监听

  • 如果在此方法中不调用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);
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Python—执行系统命令的四种方法(os.system、os.popen、commands、subprocess)
一、os.system方法这个方法是直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息。os.system(cmd)的返回值。如果执行成功,那么会返回0,表示命令执行成功。否则,则是执行错误。使用os.system返回值是脚本的退出状态码,该方法在调用完shell脚本后
Stella981 Stella981
3年前
JNI线程、Linux常用命令、权限、防火墙配置
JNI\_OnLoad:调用System.loadLibrary()函数时,内部就会去查找so中的JNI\_OnLoad函数,如果存在此函数则调用。JNI\_OnLoad会:告诉VM此native组件使用的JNI版本。​对应了Java版本,android中只支持JNI\_VERSION\
Wesley13 Wesley13
3年前
Java高并发编程四
_做个笔记,java线程常用的方法,耐心看完._编号方法说明1publicvoidstart()使该线程开始执行;Java虚拟机调用该线程的run方法。2publicvoidrun()如果该线程是使用独立的Runnable运行对象构造的,则调用该Runnable对象的run方法;否则,该方
Stella981 Stella981
3年前
Android入门:HTML布局中Android程序与JAVASCRIPT的交互
1、JAVASCRIPT调用Android里面的方法//主函数publicclassVMusicActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){
Wesley13 Wesley13
3年前
Unity之SDK接入(Unity与Android通信)
首先介绍一点关于Android与unity通信的知识:完成通信主要靠unity中的class.jar包(在unity的安装目录下)。在unity中调用android的方法:jo.call("方法名"\,参数名\)       其中\\代表可有可无。在endroid中调用unityu的方法:导入class.jar包,继承
Stella981 Stella981
3年前
Android toolbar 标题精确居中 不会因返回键偏移
1\.总的布局文件<android.support.design.widget.CoordinatorLayoutxmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com
Easter79 Easter79
3年前
SpringMvc接受特殊符号参数被转义
WEB开发时,在前端通过get/post方法传递参数的时候 如果实参附带特殊符号,后端接收到的值中特殊符号就会被转义例如该请求: http://localhost:10001/demo/index.do?name张三(1)注:中文()不会出现此种情况后台就收到的实际name值为:  张三&40;1&41;&40;其实为h
Stella981 Stella981
3年前
Python time模块 返回格式化时间
常用命令  strftimetime.strftime("%Y%m%d%H:%M:%S",formattime)第二个参数为可选参数,不填第二个参数则返回格式化后的当前时间日期201812112:00:00time.strftime('%H:%M:%S')返回当前时间的时分秒time.strftim
Wesley13 Wesley13
3年前
Unity横屏
Android下发现Unity里面的Player设置,并不能完全有效,比如打开了自动旋转,启动的时候还是会横屏,修改XML添加以下代码<applicationandroid:icon"@drawable/ic\_launcher"                    android:label"@string/app\_name"
Easter79 Easter79
3年前
Tcl命令操作实验
字符串操作:stringoptionstring1string2其中option可以是:compare 按字母顺序比较,小于则返回1,等于返回0,大于返回1match 判断是否匹配first判断string2中string1第一次出现的位置,如果没有则返回1last 和first作用相反,最后一次出现的位置,如果没有则返回
Wesley13 Wesley13
3年前
JS监听手机物理返回键,返回到指定页面
             pushHistory();window.addEventListener("popstate",function(e){window.locationdata.info.advert.link