首页 > 系统 > Android > 正文

Android 中ListView点击Item无响应问题的解决办法

2019-12-12 04:17:06
字体:
来源:转载
供稿:网友

如果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会覆盖子类控件而直接获得焦点

  我们使用的是第三个。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表