Android ImageButton, как иметь область с клики, которая больше, чем само изображение?

У меня есть маленький Android ImageButton на экране, представляющий значок. Проблема в том, что ее трудно трогать и активировать. Я не хочу увеличивать размер самого изображения, но я хотел бы расширить область с возможностью кликов и увеличить ее, поэтому, если пользователь окажется достаточно близко к изображению, он активирует событие onClick. Как это можно сделать без реализации событий onTouch для окружающей области экрана?

Ответ 1

Вы можете обернуть свой ImageButton в другой ViewGroup и установить дополнение на ViewGroup. Затем вы будете слушать клики по ViewGroup. Вот пример:

<FrameLayout
    android:id="@+id/button_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="20dp" >

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/my_button"
        android:duplicateParentState="true"
        android:clickable="false"
        android:focusable="false" />

</FrameLayout>

Затем вы прослушиваете клики по R.id.button_layout, а ваш ImageButton должен получать все те же состояния (нажатые, нажатые и т.д.) в качестве родительского макета.

Ответ 2

У меня была аналогичная ситуация... Я просто поместил значок с использованием относительного макета, а затем поместил большую кнопку прямо поверх нее, которая использовала полностью прозрачную в нормальном состоянии, и добавляет полупрозрачный цвет для прессованный/сосредоточены/и т.д.

Ответ 3

Я не уверен, как настроен наш макет, но одна вещь, которая приходит на ум, - использовать относительный макет. Создайте свой значок с большим прозрачным фоном. Вам нужно будет поиграть с макетом, чтобы правильно позиционировать его, но прозрачная область также будет доступна.