如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法
是在listitem的布局文件中设置descendantFocusability属性。
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"><!--添加这个属性-->
<CheckBox
android:id="@+id/switchbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="@dimen/widget_size_6"
android:layout_marginTop="@dimen/widget_size_6"
android:button="@drawable/checkbox__onoff_bg_selector"
android:checked="false" />
</FrameLayout>
在Android开发中,如果Listitem包含像Button或Checkbox这样的控件,listitem可能会失去焦点,无法响应事件。解决方法是通过在listitem布局文件中设置descendantFocusability属性为blocksDescendants,使ViewGroup直接获取焦点,避免子控件的影响。
698

被折叠的 条评论
为什么被折叠?



