[Android]琐碎知识点

横竖屏中遇到的问题

  项目中很少手机出现此情况,但是还是遇到了——红米3和VIVO中的一款(5.0系统)。具体情况如下:
  Activity A、B、C(以下均以字母代替),其中A在Manifest中指定方向为portrait,B未指定,C为landscape。正常的流程是A跳转B,B跳转C,在C进行操作后返回数据到B,C销毁,最后由B跳至其它Activity。对于绝大部分手机都没有任何问题,但是,但是,出现了:
  A跳转B,B跳转C,在C进行操作后直接返回到了A。。。然后周而复始,到不了下一步。。。
  有问题解决问题,这不是坑,坑的是手头没有出问题的手机呀,只能上云真机,debug看了看Activity的生命周期:在C操作返回B时,B竟然被销毁了。。。思来想去,没理由啊,只记得同一Activity在旋转时会销毁并重建Activity,但这是两个呀!算了,死马当作活马医,加上onSaveInstanceState()无效,指定B为portrait后,好了~~
  另外,VIVO那个在创建文件也不正常呀不正常,mkdirs()直接false,我擦勒。。。第一次遇见。原因目前未知,但先创建父目录,再创建子目录就OK了,这种问题真得跪。

ScrollView页面未置顶问题

  又第一次遇见:一进入Activity,布局显示的并非最顶端,而是下移了一部分。纳闷,在之前的项目中都好好的,挪过来加了点东西咋就成这样了,也没有啥布局焦点的设置呀。上网查呗,据说ScrollView中嵌套ListView时,ListView会获得焦点,使ScrollView下移。看来不只是,我这的问题应该是GridView引起的:ScrollView的下移,刚好使GridView完整的显示。
  解决方法,在ScrollView的父布局中加入如下代码:

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

  关于上述两句的意思,转一个:
  android:focusable和android:focusableInTouchMode的区别
  根据这个链接的描述,只设置第一条属性即可达成目标,但我为什么还要写两条呢,因为我,
  懒。。。

android:supportRtl

  网上很多文章都说这个属性缺省时为false。但经过测试,属性为true和不指定时,在开发者模式中开启强制从右到左布局后,程序的布局均会变为从右到左。只有明确指定属性值为false时,程序布局才不会受开发者模式中设置的影响。
  测试机型:酷派大神F1;Android版本:4.4.2。

主活动中的android:lable

  主活动中设置了android:label,不仅对该Activity的标题产生影响,APP的名称也会被改为此label,即启动器中显示的APP名称。
  测试机型:酷派大神F1;Android版本:4.4.2。

singleTask模式

  当Activity的启动模式指定为singleTask时,每次启动该Activity首先会在栈中检查是否存在此Activity的实例。如果不存在则新建;如果存在,则直接使用该实例,并把这个Activity之上的所有Activity统统出栈!
  所以在某些Activity继承链注销时可在初始Activity中设置启动模式为singleTask,末尾Activity中Intent跳转。实现除初始Activity外其它Activity的注销。

EditText禁用自动弹出

edit.clearFocus(); 无效
Parent.setFocusableInTouchMode(true)父控件会显示为被点击中的状态
以下一句,完美解决问题

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

你可能感兴趣的:([Android]琐碎知识点)