如何禁止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的Item自定义布局时,如果布局中包含可获取焦点的子控件(诸如ImageButton,Button,CheckBox等子控件,也可以说是Button或者Check...

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

转载自:http://blog.csdn.net/u014608640/article/details/51792203 在机顶盒开发中会遇到这样的需求,listview上的item项中...

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

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

浅谈AndroidTV开发与常规APP开发的异同点

不知不觉中,从事AndroidTV开发已将近快有两个月了,从一开始的焦点问题慢慢摸索到最后的KeyDown事件分发,也算是整理了写头绪。还记得最初想要调试程序,是通过AS自带的AndroidTV模拟器...

Android ListView加载多item布局及性能优化

在开发过程中,遇到一些比较旧的项目,请求网络数据时,接口返回一长串的JSON字符串,其中包括各种不相关的数据。而我们又需要把这些数据一一对应写在同一个界面上,又需要分别展示在不同的布局上,这时候就需要...
  • donkor_
  • donkor_
  • 2016年11月17日 19:35
  • 1389

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

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

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

在机顶盒开发中会遇到这样的需求,listview上的item项中有一张图片(item里的ImageView子控件),当按下机顶盒遥控器的方向键时(例如方向键的下键),让listview的某一个item...
  • RiverAM
  • RiverAM
  • 2013年12月14日 15:28
  • 754

listview中android:descendantFocusability子控件和整个Item获取焦点事件处理

转载http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html android:descendantF...

ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听.

本篇主要功能. 通过xml pull解析得到数据,然后通过自定义的Adapter绑定数据源,ListView绑定适配器,并且实现Item项的点击事件以及子View控件的点击事件. ...
  • judyge
  • judyge
  • 2015年05月27日 21:26
  • 602

ListView通过自定义适配器来显示数据并对Item项以及子view项的控件实现监听

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; ...
  • judyge
  • judyge
  • 2015年05月29日 17:15
  • 697
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何禁止listview的item项获得焦点,而让item的子控件获得焦点
举报原因:
原因补充:

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