您的位置:首页 > 其它

ListView item项中包含某些可以抢焦点的控件导致无法获取焦点问题的解决方案

2014-10-24 15:53 357 查看
问题描述:如果你自定义ListView的item中包含能获得焦点的子控件(RadioGroup、Button、CheckBox、 DatePicker、ImageButton、Gridview、SeekBar、EditText、ToggleButton、 RatingBar等)的话,默认焦点会被交给这些子控件,而ListView的项能被选中的基础是它能获取焦点,所以项中的这些子控件的焦点必须为 false,这样ListView的项才能获取onItemLongClick事件与onItemClick事件。

解决办法:在布局文件中,在项的layout布局文件根元素中加入android:descendantFocusability="blocksDescendants"

Android api描述如下:

android:descendantFocusability   子节点的聚焦属性

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.Must be one of the following constant values.



该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

        beforeDescendants:viewgroup会优先其子类控件而获取到焦点

        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
注意:ListView的项根元素layout的宽要设置成android:layout_width="fill_parent",否则可能会因为项内容太短,导致点击时获取不到焦点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐