Android PopupWindow中ListView无法点击的问题解决

这是一个简单的问题,但是对于没有了解过的人来说可能要找一会Bug了,PopupWindow中ListView无法点击,监听事件没有响应,在使用ListView时,通常都需要我们自己去定义Adapter来满足开发中的个性化需求,比如每一项中有Button、CheckBox、RadioButton、TextView等组件时,显然android.jar自带的BaseAdapter无法满足我们的需求。这时我们通常会遇到listview的每一项无法响应点击的问题,因为消息还没传回每一项的viewgroup就被其子view消费了,通过为该ViewGroup设置“android:descendantFocusability”属性来强制获取焦点,以便能够消费android系统传递过来的消息。

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

  • beforeDescendants:viewgroup会优先其子类控件而获取到焦点

  • afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

  • blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

 所以我们只需要在每一项Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了

声明一下:设置PopupWindow.setFocusable(true)是没有用的。

解决:(直接在根布局里加下面的属性)


    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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值