1.一个layout每个个时刻只有一个子view获得焦点,即从activity的最外层到最里层只有一个view是获得焦点,
layout默认的获得焦点的子view是最上面的那一个view.
2.系统有一套默认的焦点移动的规则,详情请看相关文档.
3.在view获得焦点之前,必须先判断该view是否具有获得焦点的权限,可通过
isFocusable和
isFocusableInTouchMode来判断;
同时可以通过
setFocusable和
setFocusableInTouchMode来设置指定view具有获取焦点的权限.
4.view获得焦点的方法是:
requestFocus. 是否会产生作用是受到 该view是否具有获得焦点的权限 影响的,即是否能获得焦点
是受到了系统默认的焦点移动规则和
isFocusable和
isFocusableInTouchMode的共同影响.
5.在XML阻止子view获得焦点的属性是:
android:descendantFocusability
=
"blocksDescendants"
但是如果当前activity经过了pause或者stop后再重新resume后该属性会失效,这时可以在onresume里面加上
requestFocusFromTouch方法就能重新时属性生效.