ListView或者 recyclerView 中Item中只放入一个Button,但是无论如何ListView,recyclerView总是获取不到Item的点击事件。布局如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/network_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="false"
/>
</RelativeLayout>
main 布局如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.myapplication.MainActivity">
<ListView
android:id="@+id/lsit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
/>
</RelativeLayout>
这到底什么原因呢?这是因为button 会抢占父容器的焦点,所以点击时,recyclerView listView 获取不到焦点,点击自然就没效果。这个时候要在item的跟布局上使用,改属性会覆盖子类,直接获得焦点。下面的属性设置会让父容器覆盖子类控件而获取焦点。
android:descendantFocusability="blocksDescendants"