如果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学习系列(40)--Android主题和样式之系统篇(下)
  2. Android学习之使用RadioGroup与RadioButton实现单选效果
  3. 解决导入Android例子时“Unable to resolve target 'android-x'
  4. Android(安卓)EditText 禁止软键盘弹出
  5. Android利用setLayoutParams在代码中调整布局(Margin和居中)
  6. Android(安卓)学习之 LayoutInflater
  7. Android常用控件之悬浮窗(Service实现)
  8. [android]控件EditText常用属性
  9. Android(安卓)时间显示控件 TextClock

随机推荐

  1. 【android】喜马拉雅FM sdk使用
  2. Android(安卓)Lint使用分析
  3. [置顶] Android学习之扩展android的权限
  4. Ubuntu下搭建Android开发环境
  5. 提高数倍工作效率的Android(安卓)Studio
  6. Android启动画面的实现方法
  7. 破解Xamarin
  8. Android培训班(9)
  9. Android原生(Native)C开发之一(备份测试
  10. android 程序发布