Em um aplicativo Android, tenho um GridView segurandoTextView criado por um adaptador. Nesses TextView, adiciono um ícone que possui três estados (pressionado, selecionado e padrão). Eu removi o seletor padrão do GridView com android:listSelector="#00000000"
e eu gostaria do estado selecionado do íconepara exibir. Porém, embora o estado pressionado funcione (ou seja, quando o TextView é pressionado, a versão pressionada dos ícones é mostrada), o selecionado não "t.
Eu tentei esses truques (encontrados em diferentes lugares da Web), mas também não funcionou:
configuração
android:descendantFocusability="afterDescendants"
ou
android:drawSelectorOnTop="true"
ou (nos TextViews)
android:duplicateParentState="true" />
E se eu definir o TextView para ser focado, ele obtém o foco independentemente do GridView (ou seja, clicar nele não chama o método GridView onClick ...)
O ícone é definido em um arquivo xml como este:
<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>
Existe uma maneira de dizer ao GridView para passar o estado focado para seus filhos?
Respostas:
0 para resposta № 1Também fiquei preso nisso. Uma abordagem alternativa que pode parecer boa é usar um seletor de estilo de borda e desenhá-lo no topo.