Android: расширяем кликабельную зону ImageView - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть небольшое изображение, отображаемое в LinearLayout с некоторым запасом справа и слева.Моя проблема в том, что поле не кликабельно.Как я могу отобразить пространство справа и слева от моего просмотра, используя это дополнительное пространство для расширения моей интерактивной зоны?

<ImageButton
    android:id="@+id/markReadButton"
    android:layout_width="22dp"
    android:layout_height="22dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:adjustViewBounds="true"
    android:background="@android:drawable/checkbox_on_background"
    android:gravity="center_vertical"
    android:onClick="onMarkRead" >
</ImageButton>

Ответы [ 3 ]

1 голос
/ 03 декабря 2011

Это делается в приложении Google IO 2011 Scheduuling с использованием TouchDelegate.Взгляните на Activity, которая использует его следующим образом:

// Larger target triggers star toggle
final View starParent = mRootView.findViewById(R.id.header_session);
FractionalTouchDelegate.setupDelegate(starParent, mStarred, new RectF(0.6f, 0f, 1f, 0.8f));

Реализация TouchDelegate реализована здесь .Это открытый исходный код, и его должно быть легко импортировать в ваш проект.

Удачи, надеюсь, это поможет!

0 голосов
/ 02 апреля 2014

Просто добавьте родителя макета и установите, например, на 20 дп больше размер по ширине и высоте

<RelativeLayout android:id="@+id/relativeLayoutButton"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:paddingRight="20dp"
        android:paddingLeft="20dp" >

<ImageButton
    android:id="@+id/markReadButton"
    android:layout_width="22dp"
    android:layout_height="22dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:adjustViewBounds="true"
    android:background="@android:drawable/checkbox_on_background"
    android:gravity="center_vertical"
    android:onClick="onMarkRead" >
</ImageButton>

А затем установите то же положение макета и вашего изображения.установить также кликабельную же раскладку и кнопку

0 голосов
/ 02 декабря 2011

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

Посмотрите на это описание полей и отступов: Разница между отступами представления и полем

Edit: Попробуйте использовать для изображения android: src, установив android: background = "@ null" и увеличив общий размер объекта ImageButton. В этот момент я даже не уверен, что вам понадобится прокладка вообще. Вы можете просто изменить высоту и ширину по мере необходимости с изображением src, центрированным в ImageButton.

    <ImageButton
        android:id="@+id/markReadButton"
        android:layout_width="60dp"
        android:layout_height="40dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:src="@android:drawable/checkbox_on_background"
        android:background="@null"
        android:adjustViewBounds="true"
        android:onClick="onMarkRead"
    />
...