判断点击是否在视图范围内。

本文介绍了一种在Android开发中判断点击事件是否发生在特定视图范围内的方法,通过获取视图在屏幕上的位置和尺寸,结合MotionEvent的坐标,实现精准的点击事件过滤。

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

判断一个点击动作,是否在指定视图范围内方法:

    /**
     * 是否点击的是提示视图范围内
     *
     * @param view 要判断的视图
     * @param ev   点击的Down事件
     */
    private boolean inRangeOfBindView(View view, MotionEvent ev) {
        int[] location = new int[2];
        view.getLocationOnScreen(location);
        int x = location[0];
        int y = location[1];
        return !(ev.getX() < x) && !(ev.getX() > (x + view.getWidth())) && !(ev.getY() < y) && !(ev.getY() > (y + view.getHeight()));
    }

重写事件处理方法

    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            View view = getCurrentFocus();
            if (isHideInput(view, event)) {
                barEditText.postDelayed(() -> {
                    barEditText.needClearFocus();
                    KeyboardUtil.hideInputMethod(barEditText);
                }, 100);
            }
        }
        return super.dispatchTouchEvent(event);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值