如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法

是在listitem的布局文件中设置descendantFocusability属性。

item的布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:paddingTop="10dp"  android:paddingBottom="10dp"  android:paddingLeft="5dp"  android:paddingRight="5dp"  android:descendantFocusability="blocksDescendants"><!--添加这个属性-->  <CheckBox   android:id="@+id/history_item_checkbt"   android:layout_height="30dp"   android:layout_width="wrap_content"   android:layout_centerVertical="true"   android:layout_alignParentLeft="true"   android:checked="false"   >  </CheckBox>  <ImageView   android:id="@+id/history_item_image"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_centerVertical="true"   android:layout_toRightOf="@id/history_item_checkbt"   android:background="@drawable/item_icon">  </ImageView>    <Button   android:id="@+id/history_item_edit_bt"   android:layout_alignParentRight="true"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_centerVertical="true"   android:text="编辑"   android:textColor="#ffffff"   android:textSize="14sp"   android:background="@drawable/button_bg">  </Button>  <TextView   android:id="@+id/history_item_time_tv"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_centerVertical="true"   android:textColor="#565C5D"   android:textSize="14sp"   android:text="10-01 10:20"   android:layout_marginRight="5dp"   android:layout_toLeftOf="@id/history_item_edit_bt">  </TextView>  <TextView   android:id="@+id/history_item_title_tv"   android:layout_height="wrap_content"   android:layout_width="fill_parent"   android:layout_centerVertical="true"   android:textColor="#565C5D"   android:textSize="14sp"   android:text="xxxxxxxxXXXXXXXXXXXXXXXX"   android:ellipsize="end"   android:maxLines="1"   android:layout_toRightOf="@id/history_item_image"   android:layout_toLeftOf="@id/history_item_time_tv"   android:layout_marginLeft="3dp">  </TextView></RelativeLayout>

android:descendantFocusability

Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.

Must be one of the following constant values.

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

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

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

我们使用的是第三个。

更多相关文章

  1. Android06_Android中常用控件
  2. 软键盘默认不弹出,点击别的控件让EditText获得焦点并弹出软键盘
  3. Android基本控件和事件以及消息总结
  4. android中控件点击两次才响应onclick方法
  5. 用自定义 LayoutManager 实现 Android 中 Gallery 或者 ViewPage
  6. Android侧滑控件之DrawerLayout的使用
  7. android 布局文件中控件ID、name标签属性的命名包含“@”、“.”

随机推荐

  1. 《android中对camera数据的简单编码处理
  2. Android(安卓)获取未安装的APK图标
  3. Android获得系统(system)权限
  4. 一套完善的Android异步任务类
  5. Android中的自动测试(1)
  6. android 中的url操作
  7. android读取本地网页
  8. 移动开发者大会.html5。Android。ios。wp
  9. Android水波纹效果
  10. Android 点击空白或滑动时候关闭软键盘(有