android RecyclerView禁止多点触控

在Android应用中,RecyclerView点击显示PopupWindow功能遇到多点触控问题,导致多个PopupWindow同时出现并重叠。尝试通过设置android:splitMotionEvents属性为"false"无效。最终解决方案是通过监听View的触控事件,识别ACTION_POINTER_DOWN和ACTION_POINTER_UP,返回true来拦截多点触控事件,从而避免PopupWindow的异常弹出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

是这样,原本有一个功能,是用RecyclerView实现的,点击每个item都会弹出一个PopupWindow。

好的,用正常的方法实现就好。(注意点就是各个popupwindow的位置)

然后有一天,发现多个手指同时点击,比方说用三个手指分别点击三个item,则会同时弹出三个PopupWindow,出现了重叠。不难想象出是什么样的效果,,,

怎么改呢?

第一反应,多点触控。肯定是跟这个有关。

1、禁止某个View的多点触控,直接在该view所在布局的根上加android:splitMotionEvents="false"。

试了,无效。

2、在该View所在页面(Activity/Fragment)的根布局添加android:splitMotionEvents="false"。

试了,无效。

3、给该View设置监听,去掉多点触控。有效。

weather_live_recycler_living_index?.addOnItemTouchListener(object : RecyclerView.OnItemTouchListener{
            override fun onTouchEvent(p0: RecyclerView, p1: MotionEvent) {
            }

            override fun onInterceptTouchEvent(p0: RecyclerView, p1: MotionEvent): Boolean {
                when(p1.action and MotionEvent.ACTION_MASK) {
                    MotionEvent.ACTION_DOWN -> {
                        return false
                    }
                    MotionEvent.ACTION_POINTER_DOWN -> {
               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值