ListView项中有Button等抢焦点控件设置Selecotor

如果在ListView项中有Button,ImageButton或添加了点击事件的控件等,那么项的点击事件就会无法触发
为了触发项的点击事件首先在项的布局文件中添加属性
android:descendantFocusability="blocksDescendants"
效果就是给所有子控件加了属性
android:focusable="false"
这样项的点击事件就能触发了

如果在子项的子控件设置有Selector,点击子项任意区域子控件的Selector都会被触发
解决方法就是子控件不使用Selector,而使用OnTouchListener来替代Selector
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//按下效果
} else if (event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP) {
//弹起效果			 
}

对于这种效果暂时只找到这种解决方法,如果有更好的解决方法请告诉我
================================================================
给button等控件设置 android:duplicateParentState="false"即可( 方法无效
================================================================

如果不想使用Touch事件,那就只能给item里面设置点击事件

版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(ListView项中有Button等抢焦点控件设置Selecotor)