Android 中ListView点击Item无响应问题的解决办法
程序员文章站
2024-02-26 21:58:22
如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法是在listitem的...
如果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会覆盖子类控件而直接获得焦点
我们使用的是第三个。
上一篇: pycharm+PyQt5的安装方法
推荐阅读
-
Android 中ListView点击Item无响应问题的解决办法
-
Android 中ListView点击Item无响应问题的解决办法
-
Android 中ScrollView与ListView冲突问题的解决办法
-
Android 中ScrollView与ListView冲突问题的解决办法
-
Android中ListView的item点击没有反应的解决方法
-
Android ListView的item背景色设置和item点击无响应的解决方法
-
Android中ListView的item点击没有反应的解决方法
-
JQueryon()方法绑定动态元素的点击事件无响应问题的解决办法
-
Android ListView的item背景色设置和item点击无响应的解决方法
-
Android ListView item中有按钮(Button)不能点击或者条目不能点击的问题