扩大View点击范围

作者: 一只好奇的茂 | 来源:发表于2017-10-12 11:37 被阅读196次

padding方式

适合图片等dp或px为单位的view,
不适合textview、button这种以或含sp计算单位的view。

TouchDelegate方式

有时候美工提供给我们的图标是很小的,但却要在如此小的图标上附加点击事件,如果不做处理,用户在使用的时候是很难点中的。当然,我们可以通过布局做调整处理,但是往往是布局变得更复杂。现在我们通过TouchDelegate来扩大View点击区域方式解决这个问题。

作用

假设有两个View,分别是v1、v2,可以通过v1.setTouchDelegate(new TouchDelegate(bounds, v2))来委派触摸事件,其中bounds是一个Rect。执行该这个方法后,v1中bounds区域的触摸事件TouchEvent将会传递给v2。

代码

    public static void setTouchDelegate(final View view, final int expandTouchWidth) {
        final View parentView = (View) view.getParent();
        parentView.post(new Runnable() {
            @Override
            public void run() {
                final Rect rect = new Rect();
                view.getHitRect(rect); // view构建完成后才能获取,所以放在post中执行
                // 4个方向增加矩形区域
                rect.top -= expandTouchWidth;
                rect.bottom += expandTouchWidth;
                rect.left -= expandTouchWidth;
                rect.right += expandTouchWidth;

                parentView.setTouchDelegate(new TouchDelegate(rect, view));
            }
        });
    }

使用的时候只需在onCreate中或其他合适的地方调用setTouchDelegate(v2, 100),v2是要扩大点击区域的view,100是v2四周要扩大的点击区域px值。

注意点

  1. 必须保证parent足够大,如果自定义的范围超出parent的大小,则超出的那部分无效。
  2. 一个parent只能设置一个触摸委派,设置多个时,只有最后设置的child有效。如果希望一个view能设置多个委派,需要再自定义parent

参考

利用TouchDelegate扩大View点击区域
ListView Tips & Tricks #5: Enlarged Touchable Areas

相关文章

  • 扩大View点击范围

    padding方式 适合图片等dp或px为单位的view,不适合textview、button这种以或含sp计算单...

  • 扩大View点击范围

    一般通过设置padding值来扩大范围但出现以下两种情况: 如ImageView,设置其padding值,可触摸区...

  • 扩大按钮点击范围

    使用 [self.delButton setEnlargeEdgeWithTop:20 left:50 botto...

  • 扩大按钮点击范围

    转至:https://kevinmky.github.io 在不改变按钮尺寸的前提下,扩大按钮的点击范围 场景: ...

  • 扩大按钮点击范围

    直接调用即可.h .m

  • 扩大控件点击范围

    在实际开发中,会遇到有些UI比较小,控件占用 的控件小,用户点击不到,那么需要手动扩大控件的点击范围,使其热区扩大

  • 扩大按钮点击范围

    // MARK:扩展按钮的点击区域import Foundationfunc associatedObject

  • ios 扩大UIButton点击范围

    先了解Hit-Test请看上一篇文章https://www.jianshu.com/writer#/noteboo...

  • 扩大UIButton的点击范围

    实现方式:利用runtime写一个button的类别,使用时调用便可。 demo地址扩大按钮点击范围

  • UIButton 扩大点击范围

    实际开发中经常遇到因为Button太小导致用户无法点击到有效区域影响体验,这时就要增加点击范围。这里我们给Butt...

网友评论

  • cuixbo:想法很好,基本没啥用,太累赘,只能设置一个
    小王泽哥:@崔小波 美工给大图。
    cuixbo:@一只好奇的茂 只好设置padding
    一只好奇的茂:@崔小波 感觉这种方式不够,你还有其他思路没

本文标题:扩大View点击范围

本文链接:https://www.haomeiwen.com/subject/xapnyxtx.html