首页 > 移动平台 > 详细

Android 开发中踩过的坑之十二: ListView中的焦点抢夺

时间:2015-10-16 19:14:45      阅读:311      评论:0      收藏:0      [点我收藏+]

当ListView设置了OnItemClickListener, Item项里的View设置了OnClickListener时, 

经常遇到某一个Listener失效的现象.

根本原因是焦点的问题, 

当item项目中某个View能够获取焦点时, 根据View焦点传递的规则会优先接受点击事件,

如此就会导致ListView的OnItemClickListener失效.

因为能够自动获取焦点的View有优先获取点击事件的权利,

OnItemClickListener是在Item的父节点, 所以它是最后一个处理点击事件的(虽然最先接收, 

但是先分发给子View, 子View处理完后, 最后自己处理). 如果子View处理并消化了点击事件, 

那么OnItemClickListener久失效了.


解决的方法:

1 你可以放弃OnItemClickListener, 只是用OnClickListener.

2 检查你的Item里, 时候有focusable=true 和 focusableInTouchMode=true的View. 

    如果有, 把他们都设置成false. 




Android 开发中踩过的坑之十二: ListView中的焦点抢夺

原文:http://my.oschina.net/u/1393188/blog/518080

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!