In einer Android-State-Liste ziehbar, wird state_focused ignoriert
Frage
Mein Android-App, die eine TabActivity nutzt seinen Inhalt anzuzeigen, verfügt über 4 Registerkarten, die alle verwenden eine state-Liste ziehbar für das Symbol. Sie alle haben die gleiche Struktur, nur mit verschiedenen Bildern:
<?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>`
Wenn jedoch Registerkarten mit dem Trackball auf meinem HTC Desire (grüne Markierung) wählt, wird das dunkele Bild anstelle dem Licht eines verwendet. Sobald ein Tab tatsächlich gewählt wird, ist es weiß geworden. Was mache ich falsch?
Lösung
Sie müssen für verschiedene Zustände verschiedene Elemente haben. mehrere Staaten in einem Artikel der Kombination (wie du) ist definitiv falsch. Ihre XML kann wie folgt aussehen:
<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>
Wenn es darum geht Ihre ziehbar seinen Zustand zu zeichnen wird zunächst geprüft. Wenn es das erste Element ausgewählt ist, wird verwendet, und das ist es - keine fokussierte Prüfung durchgeführt wird (Android findet nur ersten - nicht „relevantesten“ - Zustand). Aber wenn es nicht ausgewählt ist, wird die Prüfung für den fokussierten Zustand durchgeführt werden.