5

ボタン (ImageView) のクリック可能な領域を増やしたい。しかし、これを視覚的に反映させたくありません。ボタンは小さく (余白やパディングなどはありません)、クリック可能な領域は大きいように見える必要があります。

ここに画像の説明を入力

私が考えることができる唯一のことは、レイアウト全体を RelativeLayout に配置し、オーバーレイをプログラムで 2 番目の「レイヤー」に追加することです。数学で左マージンと上マージンを計算します。

より良いアプローチはありますか?

私はすでにここを見ました パディングを使用して ImageView のクリック可能な領域を拡張しますか?

またはこちら ボタンをクリックしやすくする

他の人もいますが、常に画像にパディングまたは透明な領域を追加してレイアウトを変更しますが、私はそれをしたくありません。

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 に答える