ListView的Item点击事件无响应

来源:互联网 发布:南平广电网络招聘 编辑:程序博客网 时间:2024/05/16 12:11

listview的item中放了一个RatingBar,导致ListView的item点击事件不能响应,仔细打断点看了原来是RatingBar截获了点击事件,RatingBar直接获取了焦点(点击的是item和RatingBar的重叠区域)关于RatingBar的显示异常可以参看这篇博客:RatingBar星星显示不全或星星图片被拉伸解决方案


像这种listView的item无响应有很多的类似控件都会导致,比如EditText,CheckBox等等,那么该如何解决呢?
这主要牵涉到了Android的view的事件分发机制,这不是一两句话就能说清楚的,先看看解决方案
第一种主要是在listView的适配器中把这些类似的控件获取焦点的方式更改,重写OnTouchListener等方式,但是这样做太过于繁琐,而且这些重写的机制一旦控制不好就会出现意想不到的bug所以这里采用第二种
第二种:在ListView的item的根布局添加descendantFocusability属性
descendantFocusability有三种值:
        beforeDescendants:viewgroup会优先其子类控件而获取到焦点

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

        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

通常我们采用第三种本文就是采用的第三种更改后断点可以跟踪到点击事件(点击重合区域)


当然肯定还有其他的很多解决方案,有更好方法的希望能一起进步,大神多多指教啊

原创粉丝点击