5

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

在此处输入图像描述

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

有更好的方法吗?

我已经看过here Expandable clickable area of​​ an ImageView by using padding?

或在这里 使按钮更易于点击

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

4

1 回答 1

4

使用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)
        }
    }
于 2012-06-17T16:53:13.157 回答