添加更大的透明覆盖层以增加可点击区域,而无需更改布局

Ixx*_*Ixx 5 layout android overlay

我想增加按钮的可点击区域(ImageView).但我不希望这在视觉上反映出来.它必须看起来像按钮很小(没有边距,填充等),但可点击区域很大.

在此输入图像描述

我唯一能想到的就是将我的整个布局放在RelativeLayout中,并以编程方式将叠加层添加到第二个"图层".用数学计算左边距和边距.

有更好的方法吗?

我已经看过这里 使用填充扩展ImageView的可点击区域?

或者在这里 使按钮更容易点击

还有一些,但他们总是改变布局添加填充或透明区域到图像,我不想这样做.

Com*_*are 4

使用 a TouchDelegate,如本博客文章中所述。

要点是,您可以定义一个TouchDelegate对象并将其附加到小部件以增加其触摸区域,而不会产生视觉影响。

在 Kotlin 中,这可能看起来像:

    fun setExpandedTouchArea(view: View, extraSpace: Int) {
        val parent = view.parent as View

        parent.doOnLayout {
            val area = Rect()

            view.getHitRect(area)

            area.top -= extraSpace
            area.bottom += extraSpace
            area.left -= extraSpace
            area.right += extraSpace

            parent.touchDelegate = TouchDelegate(area, view)
        }
    }
Run Code Online (Sandbox Code Playgroud)