在headerview这一类view中如果有edittext,在点击edittext时可能会出现focus死循环问题,这时需要在listivew上设置item中focus的传递和消费规则,
listView.setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
这里的setDescendantFocusability的参数有三个,分别是:
- FOCUS_BEFORE_DESCENDANTS ViewGroup本身先对焦点进行处理,如果没有处理则分发给child View进行处理
- FOCUS_AFTER_DESCENDANTS 先分发给Child View进行处理,如果所有的Child View都没有处理,则自己再处理
- FOCUS_BLOCK_DESCENDANTS ViewGroup本身进行处理,不管是否处理成功,都不会分发给ChildView进行处理
当在头部视图(Headerview)的ListView中包含EditText时,可能出现焦点循环问题。为了解决这个问题,需要设置ListView的descendantFocusability属性。通过将该属性设置为FOCUS_AFTER_DESCENDANTS,确保先让子视图处理焦点,若子视图未处理,则父视图再尝试获取焦点。此设置可以防止焦点在子视图间无限循环。
4845

被折叠的 条评论
为什么被折叠?



