这是一个简单的问题,但是对于没有了解过的人来说可能要找一会Bug了,PopupWindow中ListView无法点击,监听事件没有响应,在使用ListView时,通常都需要我们自己去定义Adapter来满足开发中的个性化需求,比如每一项中有Button、CheckBox、RadioButton、TextView等组件时,显然android.jar自带的BaseAdapter无法满足我们的需求。这时我们通常会遇到listview的每一项无法响应点击的问题,因为消息还没传回每一项的viewgroup就被其子view消费了,通过为该ViewGroup设置“android:descendantFocusability”属性来强制获取焦点,以便能够消费android系统传递过来的消息。
声明一下:设置PopupWindow.setFocusable(true)是没有用的。
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
所以我们只需要在每一项Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了
解决:(直接在根布局里加下面的属性)
android:descendantFocusability="blocksDescendants"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@color/colorWhite"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/rl_screen_pupopwindow"
android:layout_width="match_parent"
android:layout_height="44dp"
android:descendantFocusability="blocksDescendants"
android:gravity="center"
android:orientation="horizontal">
<CheckBox
android:id="@+id/cb_screen_pupopwindow"
android:layout_width="wrap_content"
android:textColor="@color/gray_two"
android:layout_height="match_parent"
android:button="@null"
android:layout_marginLeft="15dp"
android:textSize="14sp"
android:background="@null"
android:gravity="center"
android:text="风控规则"/>
<!--<TextView-->
<!--android:id="@+id/tv_screen_pupopwindow"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"-->
<!--android:text="风控规则"-->
<!--android:layout_marginLeft="15dp"-->
<!--android:gravity="center"-->
<!--android:textColor="@color/gray_two"-->
<!--android:textSize="14sp" />-->
<ImageView
android:id="@+id/im_screen_pupopwindow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:visibility="invisible"
android:src="@mipmap/paly_icon_choose"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginRight="15dp"
/>
</RelativeLayout>
</LinearLayout>