android view 焦点总结

本文总结了Android中View的焦点管理规则,包括每个Layout只有一个子View能获得焦点,系统默认的焦点移动策略,以及如何通过isFocusable和isFocusableInTouchMode判断和设置View的焦点权限。此外,还提到了使用requestFocus方法获取焦点,并讨论了XML中阻止子View获取焦点的属性android:descendantFocusability及其在Activity恢复时可能遇到的问题和解决方案。
摘要由CSDN通过智能技术生成
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方法就能重新时属性生效.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值