У меня есть маленький Android ImageButton на экране, представляющий значок. Проблема в том, что ее трудно трогать и активировать. Я не хочу увеличивать размер самого изображения, но я хотел бы расширить область с возможностью кликов и увеличить ее, поэтому, если пользователь окажется достаточно близко к изображению, он активирует событие onClick. Как это можно сделать без реализации событий onTouch для окружающей области экрана?
Android ImageButton, как иметь область с клики, которая больше, чем само изображение?
Ответ 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
Я не уверен, как настроен наш макет, но одна вещь, которая приходит на ум, - использовать относительный макет. Создайте свой значок с большим прозрачным фоном. Вам нужно будет поиграть с макетом, чтобы правильно позиционировать его, но прозрачная область также будет доступна.