LinearLayout (с onClick), содержащий ImageButton - есть ли лучший способ решить это? - PullRequest
4 голосов
/ 14 августа 2011

На данный момент у меня есть что-то вроде этого:

<LinearLayout android:layout_height="80dip" android:id="@+id/linearLayoutSettings"
 android:layout_width="80dip" android:orientation="vertical">

    <ImageButton android:layout_height="wrap_content" android:src="@android:drawable/ic_menu_manage" 
android:id="@+id/imageButton1" android:layout_width="wrap_content"></ImageButton>

</LinearLayout>

LinearLayout подключен к слушателю onClick.

Проблема: Когда кнопка ImageButton нажата внутриLinearLayout, событие не запускается.

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

Вопрос: Есть ли более эффективный способ решения этой проблемы?

Ответы [ 5 ]

2 голосов
/ 09 марта 2013

Измените ImageButton на ImageView, и вы начнете получать событие нажатия

1 голос
/ 14 августа 2011

Прикрепите следующий тег к каждой кнопке изображения:
android:onClick="yourOnClickFunction"
Затем в своей деятельности добавьте соответствующую функцию:

public void yourOnClickFunction(final View v) {
switch(v.getId()) {
     //Do whatever is necessary.
}
}

В блоке переключателей необходимо знать идентификаторы кнопок. Вы можете получить их через findViewById (R.id.aButton).

0 голосов
/ 14 августа 2011

Вы должны установить атрибут setClickable(true); !!Вы можете получить доступ к нему в формате XML, используя android:clickable="true"

0 голосов
/ 14 августа 2011

Если я правильно понимаю, при нажатии кнопки LinearLayout onClickListener не срабатывает.Что имеет смысл.

Что вы можете сделать, это поставить yourLinearLayout.performClick();, который будет программно запускать событие onClick для макетов.Если вы поместите его в конце кнопок на клике, то он будет выполнять кнопки, а затем макеты в порядке.

0 голосов
/ 14 августа 2011

Вы можете написать цикл поиска всех кнопок в макете и присоединить к ним один раз созданный слушатель.

...