Pergunta

Meu aplicativo Android, que usa uma tabactividade para exibir seu conteúdo, possui 4 guias que usam uma lista de estado desenhada para o ícone. Todos eles têm a mesma estrutura, apenas com imagens diferentes:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/icon_options_dark" android:state_selected="true" android:state_focused="false" />
        <item android:drawable="@drawable/icon_options_white" />
</selector>`

No entanto, ao selecionar guias com o trackball no meu desejo HTC (destaque verde), a imagem escura é usada em vez da luz. Assim que uma guia é realmente selecionada, ela se torna branca. O que estou fazendo errado?

Foi útil?

Solução

Você precisa ter itens diferentes para estados diferentes. Combinar vários estados em um item (como você fez) está definitivamente errado. Seu XML pode ficar assim:

<xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/icon_options_dark"
        android:state_selected="true" />
  <item android:drawable="@drawable/icon_options_light"
        android:state_focused="true" />
  <item android:drawable="@drawable/icon_options_white" />
</selector>

Quando se trata de desenhar seu desenho, o estado é verificado primeiro. Se for selecionado, o primeiro item será usado e é isso - nenhuma verificação focada será realizada (Android achados apenas primeiro - não "mais relevante" - Estado). Mas se não for selecionado, o cheque para o estado focado será realizado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top