Строка Android становится недоступной для нажатия кнопкой - PullRequest
18 голосов
/ 24 февраля 2010

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

Спасибо.

Ответы [ 4 ]

25 голосов
/ 24 февраля 2010

Вам необходимо установить itemsCanFocus в списке следующим образом:

    mList.setItemsCanFocus(true);

Чтобы сделать кнопку нажатой. Затем вам нужно будет использовать свой собственный адаптер и в getView вернуть представление, которое можно активировать нажатием кнопки мыши. Вы также потеряете состояния подсветки по умолчанию, поэтому вам нужно вернуть их обратно в фоновый ресурс. Так что сделайте это:

    view.setClickable(true);
    view.setFocusable(true);
    view.setBackgroundResource(android.R.drawable.menuitem_background);

до вашего просмотра.

9 голосов
/ 14 июня 2013

Всякий раз, когда я вижу сообщения, касающиеся атрибутов android:focusable и android:clickable, я всегда вижу, что им обоим одновременно присваивается одно и то же значение. Я полагал, что должна быть причина, если они - два отдельных атрибута, а не один.

Оказывается, гораздо лучший способ добиться желаемого поведения - установить

android:focusable="false" 

или

yourButton.setFocusable(false)

на Button в вашем View. Как только вы это сделаете, вы оба сможете установить OnClickListener на Button, и щелчок по строке вызовет метод onListItemClick() в вашем OnItemClickListener.

2 голосов
/ 02 ноября 2012

Попробуйте установить для своих виджетов значение , не активируемое щелчком и не фокусируемое в xml, нажатие на элементы будет работать нормально, а также нажатие кнопки будет работать нормально.

android:clickable="false" 
android:focusable="false"

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

0 голосов
/ 24 февраля 2010

К сожалению, я не думаю, что это возможно. Строка ListView может иметь либо фокусируемые виджеты, такие как кнопка, или , которые можно нажимать, но не оба. Смотрите ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...