Подтвердить что ты не робот

Развернуть интерактивную область ImageView с помощью прокладки?

У меня есть ImageView, и я хочу, чтобы он был кликабельным. Само изображение составляет всего 32x32 пикселя, но я хочу, чтобы область с кликами была больше, чтобы было легче попасть. Я надеялся, что смогу установить значения полей макета, чтобы увеличить размер кликируемой области изображения:

<ImageView
   layout_width="32dip"
   layout_height="32dip"
   layout_margin="20dip" />

Это не работает, я могу просто восстановить ресурс изображения, чтобы вокруг него была более прозрачная область. Это немного раздражает, потому что трудно настроить, если мне когда-либо понадобится изменить зону с клики. Это не просто один png, это stelstististable, поэтому я должен изменить размер 3 разных png, если мне когда-либо понадобится настроить зону с кликом.

Что-нибудь еще я могу сделать?

Спасибо

4b9b3361

Ответ 1

Предложения (никогда не пробовал сам):

  • Создайте ImageView как можно больше, чем поместите в него изображение без масштабирования

    ImageView.setScaleType(ImageView.ScaleType.CENTER).
    
  • Подход к грубой силе: создайте новый более крупный png, который имеет исходное изображение с центром, а остальная часть прозрачна.

Ответ 2

Используйте прокладку. макеты листа используются, если для вставки пространства вне границы вида.

для равномерного заполнения со всех сторон

  <ImageView
       android:padding="20dip" />

или для установки прокладки с каждой стороны

<ImageView
     android:paddingLeft="10dip"
     android:paddingRight="15dip"
     android:paddingTop="23dip"
     android:paddingBottom="12dip" />

Надеюсь, что это поможет!

Ответ 3

Вместо изменения размера изображения (ответ Питера Кнего) или увеличения заполнения (ответ Саймона) я предлагаю установить атрибуты minWidth и minHeight в комбинации с scaleType="center":

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:minWidth="40dp"
  android:minHeight="40dp"
  android:scaleType="center"
  android:src="@drawable/your_image" />

Это гарантирует, что маленькие изображения имеют размер как минимум 40x40dp, а изображение не масштабируется, если оно меньше. Если в один прекрасный день изображение будет заменено другим изображением, большим, чем minWidth и minHeight, оно не станет больше 40x40dp, поскольку оно будет уменьшено. Таким образом, всегда гарантируется минимальный размер клика 40x40dp, и изображение всегда отображается хорошо.