Дети GridView не отображают фокус - PullRequest
3 голосов
/ 10 мая 2011

В приложении для 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 о передаче сфокусированного состояния его дочерним элементам

1 Ответ

0 голосов
/ 20 июля 2011

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

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