如何禁止listview的item项获得焦点,而让item的子控件获得焦点

转载 2015年07月08日 09:02:09
本文为原创文章,欢迎转载,但请注明出处http://www.cnblogs.com/yexiubiao/archive/2013/02/24/2924324.html,未在文章页面明显位置给出原文连接的,将保留追究法律责任的权利。   
 
在机顶盒开发中会遇到这样的需求,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项的子空间是不能获得焦点的)
通过这一行代码即可实现以上需求,另外,关于焦点的传递大家有兴趣的话可以自行查看源码。
 
补充:如果没有出现左图的获得焦点高亮效果,可能有以下原因:
1,ImageView默认不能获得焦点,应该设置属性为:android:focusable="true" (如果是ImageButton或Button等则不需要设置,他们默认是可以获得焦点的)
2,没有为该ImageView设置自定义drawable图片的的selector(该ImageView其实已经获得焦点了,只是没有看出来而已)。

相关文章推荐

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

如果你自定义ListView的项中包含能获得焦点的子控件(RadioGroup、Button、CheckBox、 DatePicker、ImageButton、ScrollView、SeekBar、E...

Android进阶之Listview/GridView的onItemClick()获取不到焦点

1、问题描述 当使用自定义布局的Listview/GridView的时候,如果在item的布局文件里面存在Button或者CheckBox等控件以及其子类控件的时候,经常会碰到各种控件的点击事件冲突...

VerticalGridView第一行获取焦点后,再次按向上键,上方的控件获取不到焦点解决方案

最近在做项目中,有这么一个需求。点击电视剧某一集进入详情页,并可以点击选集按钮进行选集。于是乎,想到了使用VerticalGridView来实现(VerticalGridView是V17新推出的控件,...

android GridView禁止 item 获取焦点问题,求大牛!

最近在做一个机顶盒应用,需求是横向滚动两行数据; 我的方案是: HorizontalScrollView + GridView,但是如果要用焦点控制滚动的话,必须把 item 禁止获取焦点,于是给...

Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item

在电视上开发android应用时,经常要做有二级菜单的应用,例如: 但当我们按左键的时候,左边listview的最近的item会被选中,即如下效果: 但是在电视上开发应用的时候,我们希望...

android leanback使用详解以及获取焦点高亮

最近公司项目距转向TV端,android 开发TV端最大的不同就是焦点处理以及获取焦点时都会有非常酷炫的特效。由于

如何禁止listview的item项获得焦点,而让子控件获得焦点

在机顶盒开发中会遇到这样的需求,listview上的item项中有一张图片(item里的ImageView子控件),当按下机顶盒遥控器的方向键时(例如方向键的下键),让listview的某一个item...

Android 在机顶盒开发过程当中如何禁止listview的item项获得焦点,而让item的子控件获得焦点

Android 在机顶盒开发过程当中如何禁止listview的item项获得焦点,而让item的子控件获得焦点

android listview 中item 子控件抢占焦点问题

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了...

android:descendantFocusability用法简析 解决listview中子控件导致item不能获取焦点

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)