В приложении для Android у меня есть GridView, содержащий TextView, созданный адаптером.В этом TextView я добавляю значок, который имеет три состояния (нажата, выбрана и по умолчанию.) Я удалил селектор по умолчанию GridView с android:listSelector="#00000000"
, и я хотел бы, чтобы вместо этого отображалось выбранное состояние значка.Но хотя нажатое состояние работает (т.е. когда нажата TextView, отображается нажатая версия значков), выбранный вариант не работает.
Я попробовал эти приемы (можно найти в разных местах в Интернете).но это не сработало:
настройка
android:descendantFocusability="afterDescendants"
или
android:drawSelectorOnTop="true"
или (в TextViews)
android:duplicateParentState="true" />
И если я устанавливаю TextView для фокусировки, он получает фокус независимо от GridView (то есть нажатие на него не вызываетметод GridView onClick ...)
Значок определяется в xml-файле следующим образом:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/ic_flag_bg_pressed"/>
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/ic_flag_bg_pressed"/>
<item android:state_focused="true"
android:drawable="@drawable/ic_flag_bg_selected"/>
<item android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/ic_flag_bg_default"/>
</selector>
Есть ли способ сообщить GridView о передаче сфокусированного состояния его дочерним элементам