如果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. android 焦点问题
  2. EditText
  3. 软键盘默认不弹出,点击别的控件让EditText获得焦点并弹出软键盘
  4. Android基本控件和事件以及消息总结
  5. Android06_Android中常用控件
  6. Android提高第十九篇之"多方向"抽屉[转]
  7. Android事件分发机制
  8. Android(安卓)Layout XML属性
  9. Android.GridView事件监听

随机推荐

  1. Android(安卓)Window类
  2. Android中的资源分析
  3. Android热修复原理普及
  4. Android(安卓)4.3发布 新增4大改变25日推
  5. 关于 Android(安卓)音频延迟的最新动态
  6. 2011年,谁执Android手机的牛耳?
  7. 关于 Android(安卓)音频延迟的最新动态
  8. Android(安卓)4.0.3来了 优化系统
  9. GitHub标星8.9K,Android大厂高频面试题合
  10. Android(安卓)jni的调用过程JNI_OnLoad()