当在布局文件中加入了Button、ImageButton、CheckBox、RadioButton等控件(也就是Button或者Checkable的子类控件)的时候,listView是无法响应onItemClick事件的。

问题原因:当ListView中包含Button、ImageButton、CheckBox、RadioButton等控件的时候,Android会默认将focus给了这些控件,这导致ListView根本就获取不到focus,所以导致onItemClick事件无法响应。

解决方案

(1) 将xml布局文件中出现的所有的Button、ImageButton、CheckBox、RadioButton等控件的android:focusable属性设置为false;

(2)第一种方案有点儿麻烦,一般采用该方案。修改父容器的android:descendant设置为beforeDescendants或者blocksDescendants即可。

细说android:descendantFocusability属性:

该属性可以有三种值:

(1)beforeDescendants:      viewGroup会优先其他子类控件而获取到焦点;

(2)afterDescendants:         viewGroup只有当其子类控件不需要获取焦点的时候才能获取焦点;

(3)blocksDescendants:      viewGroup会覆盖子类控件而直接获取焦点;

 

最常用的是第三个blocksDescendants。

05-11 13:38