У меня есть listView, где каждая строка имеет кнопку в макете строк. Однако, похоже, это делает строку самой непривлекательной. Как я могу сделать кнопку и строку нажатой?
Спасибо.
У меня есть listView, где каждая строка имеет кнопку в макете строк. Однако, похоже, это делает строку самой непривлекательной. Как я могу сделать кнопку и строку нажатой?
Спасибо.
Вам нужно установить itemsCanFocus в списке следующим образом:
mList.setItemsCanFocus(true);
Чтобы кнопка была нажата. Затем вам нужно будет использовать свой собственный адаптер, а в getView вернуть представление, которое является Clickable и настраиваемым. Вы также потеряете состояния подсветки по умолчанию, поэтому вам нужно вернуть их обратно в фоновый ресурс. Так сделайте это:
view.setClickable(true);
view.setFocusable(true);
view.setBackgroundResource(android.R.drawable.menuitem_background);
прежде чем возвращать свое представление.
Всякий раз, когда я вижу сообщения об атрибутах android:focusable
и android:clickable
, я всегда вижу, что они одновременно установлены одинаковыми значениями. Я решил, что должна быть причина, если они являются двумя отдельными атрибутами, а не одной.
Оказывается, гораздо лучший способ добиться желаемого поведения - установить
android:focusable="false"
или
yourButton.setFocusable(false)
на Button
в View
. Как только вы это сделаете, вы сможете установить OnClickListener
в Button
, а щелчок по строке приведет к срабатыванию метода onListItemClick()
в OnItemClickListener
.
Попытайтесь установить свои виджеты в без кликабельного и неактивного в xml, щелчок по элементам будет работать нормально, а кнопка щелчка будет работать нормально.
android:clickable="false"
android:focusable="false"
Надеюсь, что это поможет.
К сожалению, я не думаю, что это возможно. Строка ListView может иметь либо настраиваемые виджеты, либо кнопку, либо кликать, а не обе. См. ссылка.