如何禁止listview的item项获得焦点,而让子控件获得焦点
2016-06-07 19:10
260 查看
在机顶盒开发中会遇到这样的需求,listview上的item项中有一张图片(item里的ImageView子控件),当按下机顶盒遥控器的方向键时(例如方向键的下键),让listview的某一个item项里面的图片(如下图左边的ImageView)获得焦点,而不是让item自身获得焦点(下图右)。
默认的情况下,是listview的item自身获得了焦点(如上图右),也就是说listview的item获得焦点后,没有传递给子控件或者子控件默认不能获得焦点。
这时候我们可能会想到在布局文件里设置listview的descendantFocusability属性(焦点传递性):android:descendantFocusability="afterDescendants"
然而无论设置其值为afterDescendants还是beforeDescendants或blocksDescendants都没有达到想要的效果。
接下来我们可能会继续寻找listview是否有以item为关键字的相关属性,结果很遗憾,找遍了所有属性都没有item相关的关键字。
其实与item相关的设置在配置文件里面虽然没有,但是代码里还是有的,如下:
listView.setItemsCanFocus(true); //设置item项的子控件能够获得焦点(默认为false,即默认item项的子空间是不能获得焦点的)
通过这一行代码即可实现以上需求,另外,我还发现就算是自定义的listview,改方法也是可行的。
补充:如果没有出现左图的获得焦点高亮效果,可能有以下原因:
1,ImageView默认不能获得焦点,应该设置属性为:android:focusable="true" (如果是ImageButton或Button等则不需要设置,他们默认是可以获得焦点的)
2,没有为该ImageView设置自定义drawable图片的的selector(该ImageView其实已经获得焦点了,只是没有看出来而已)。
文章来源 http://www.cnblogs.com/yexiubiao/archive/2013/02/24/2924324.html
默认的情况下,是listview的item自身获得了焦点(如上图右),也就是说listview的item获得焦点后,没有传递给子控件或者子控件默认不能获得焦点。
这时候我们可能会想到在布局文件里设置listview的descendantFocusability属性(焦点传递性):android:descendantFocusability="afterDescendants"
然而无论设置其值为afterDescendants还是beforeDescendants或blocksDescendants都没有达到想要的效果。
接下来我们可能会继续寻找listview是否有以item为关键字的相关属性,结果很遗憾,找遍了所有属性都没有item相关的关键字。
其实与item相关的设置在配置文件里面虽然没有,但是代码里还是有的,如下:
listView.setItemsCanFocus(true); //设置item项的子控件能够获得焦点(默认为false,即默认item项的子空间是不能获得焦点的)
通过这一行代码即可实现以上需求,另外,我还发现就算是自定义的listview,改方法也是可行的。
补充:如果没有出现左图的获得焦点高亮效果,可能有以下原因:
1,ImageView默认不能获得焦点,应该设置属性为:android:focusable="true" (如果是ImageButton或Button等则不需要设置,他们默认是可以获得焦点的)
2,没有为该ImageView设置自定义drawable图片的的selector(该ImageView其实已经获得焦点了,只是没有看出来而已)。
文章来源 http://www.cnblogs.com/yexiubiao/archive/2013/02/24/2924324.html
相关文章推荐
- House Robber
- SQL Server地理位置信息计算两点经纬度距离
- (飛飛五十七)虚函数
- STL迭代器的使用、正向、逆向输出双向链表中的所有元素
- bzoj 4423: [AMPPZ2013]Bytehattan
- 加速度传感器的原理和应用:手机翻转、失重检测、运动检测、位置识别
- hdu 5666 Segment(大整数乘法)
- 乐学成语——导入篇
- git 强制回退服务器上的commit
- 数字转换为时、分、秒
- Solr JAVA客户端SolrJ 4.9使用示例教程
- maven dependency management
- 2016年轻人消费洞察
- JDK8 Stream
- ie下css兼容问题
- Ttestng的用法浅析
- js 调用 WebViewJavascriptBridge
- 虚拟机Ubuntu14.04安装SSH
- 链表面试题详解
- iOS开发UI基础—手写控件,frame,center和bounds属性