首页 > 其他分享 >checkbox 尺寸小难以触摸点击, 使用 onInterceptTouchEvent() 来解决。

checkbox 尺寸小难以触摸点击, 使用 onInterceptTouchEvent() 来解决。

时间:2022-10-04 16:24:55浏览次数:75  
标签:checkbox layout 触摸 onInterceptTouchEvent attrs context public

背景

在 Recyclerview 创建的列表中, 默认的 checkbox 尺寸比较小,并且后面一般会和数字一起组成一个 序号列,从视觉上来看,checkbox 和序号是绑定的,但是触摸有效区域只有很小的方框,比较矛盾。如果使用包裹 checkbox 和 数字的 linearlayout 来处理点击,触摸方便了,但是如果触摸到了 checkbox,那么 layout 的就不会触发,因为只有触摸到非 checkbox 区域才会触摸 layout, 导致处理的逻辑上面会出现一些问题。

解决方法

新建一个 layout,继承 linearlayout, override onInterceptTouchEvent() 这个函数,拦截触摸,使得触摸只能到 layout 这一层,不会再触发到 layout 内部。这样逻辑上面只要处理好 layout 的就可以了。

public class CheckBoxLinearLayout extends LinearLayout {

    public CheckBoxLinearLayout(Context context) {
        super(context);
    }

    public CheckBoxLinearLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public CheckBoxLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public CheckBoxLinearLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        //return super.onInterceptTouchEvent(ev);
        return true;
    }
}

参考:

Recycleview来回滑动时选中的CheckBox消失问题
https://blog.csdn.net/weixin_47592544/article/details/123989788

android中onInterceptTouchEvent()方法详解
https://cloud.tencent.com/developer/article/1459118

标签:checkbox,layout,触摸,onInterceptTouchEvent,attrs,context,public
From: https://www.cnblogs.com/ramlife/p/16753941.html

相关文章

  • 设置Disable 状态Radio button 和Checkbox的样式
     有时需要在view页面设置标签的状态为disabled,但是客户反映radiobutton和checkbox的颜色很浅,难以识别,尤其是打印后,如下:  可以使用下面的css更改原有的样式input[typ......
  • 笔记本触摸屏凸起处理问题处理
    笔记本机械革命深海幽灵Z2Air触摸屏凸起。如下图,笔记本已经有2-3年的时间了​这个触摸屏的地方背后位置是电池的位置。拆开笔记本,发现电池部分鼓起来,所以是因为电池鼓起来......
  • 基于信迈AM5728_am5718开发板的LCD触摸屏接口
    1开发套件简介 基于TIAM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;多核异构CPU,集成双核Cortex-A15、双核C66x浮点DSP、双核PRU-ICSS......
  • ZHAN66拔掉鼠标触摸板不能用
    ZHAN66拔掉鼠标触摸板不能用 解决办法1、打开设备管理器2、点击鼠标和其它设备在第一个HID-compliantmouse上右键选择禁用设备    参阅资料:https://www.......
  • 【Firefox浏览器】关闭触摸板双指滑动进行前进后退的功能
    痛点本以为只是Chrome浏览器存在这一奇葩功能,没成想Firefox也沦陷了!有好一阵子在使用Firefox的时候,并未发现其存在这个功能。直到有一天,打开自己的博客,翻阅上篇《【Chrom......
  • 高抗干扰触摸IC:VK3606D有6通道6键触摸检测芯片多键同时按下有效,适用智能开关,温控器,数
    型号:VK3606D :永嘉微电/VINKA封装形式:SOP16KPP2411概述  VK3606D具有6个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度,仅需极少的外部......
  • debian touchpad i3wm 触摸板配置
    编辑/usr/share/X11/xorg.conf.d/40-libinput.confSection"InputClass"Identifier"libinputtouchpadcatchall"MatchIsTouchpad"on"Mat......
  • linux关闭触摸板
    xinputlist⎡Virtualcorepointer id=2 [masterpointer(3)]⎜↳VirtualcoreXTESTpointer id=4 [slavepointer(2)]......
  • 笔记本触摸板手势操作
    来看看你的笔记本电脑触摸板支持这些手势操作吗-知乎(zhihu.com)不同品牌电脑可能略有不同,或者某些触摸板不支持这些操作以我手上这台联想笔记本来说一、单击操作:单......
  • 触摸事件都有哪些
    以下是四种touch事件:touchstart:  手指放到屏幕上时触发touchmove:  手指在屏幕上滑动式触发touchend:  手指离开屏幕时触发touchcancel:  系统取消......