一般会导致这个问题的原因是因为在自定义Listview Item时,Item中含有Button、CheckBox、RadioButton等控件,ListView默认会把Touch事件交给这些子控件,如果Touch事件被子控件消费了,ListView自然就无法触发OnItemClickListener事件。
解决这个问题可以通过设置 android:descendantFocusability=blocksDescendants属性来强制获取焦点即可。
android:descendantFocusabilit有三个属性值:
Constant | value | description |
---|---|---|
beforeDescendants | 0 | Viewgroup会优先其子类控件获取焦点 |
afterDescendants | 1 | Viewgroup只有当子类控件不需要获取焦点时才获取焦点 |
blocksDescendants | 2 | Viewgroup会覆盖子类控件而直接获取焦点 |
网友评论