我想增加按钮 (ImageView) 的可点击区域。但我不希望这在视觉上得到反射(reflect)。它必须看起来按钮很小(没有边距、填充等)但可点击区域很大。
我唯一能想到的就是将我的整个布局放在 RelativeLayout 中,并以编程方式将叠加层添加到第二个“层”。用数学计算 margin left 和 margin top。
有没有更好的方法?
我已经看过这里了 Expand clickable area of an ImageView by using padding?
或在这里 Making a button easier to click
还有其他一些,但他们总是更改布局,为图像添加填充或透明区域,我不想那样做。
最佳答案
使用 TouchDelegate
,如 this blog post 中所述.
要点是您可以定义一个 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)
}
}
关于android - 添加更大的透明覆盖层以增加可点击区域,而无需更改布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073079/