В рисуемом списке состояний Android state_focused игнорируется.
Вопрос
Мое приложение для Android, которое использует TabActivity для отображения своего содержимого, имеет 4 вкладки, каждая из которых использует список состояний, который можно нарисовать для значка.Все они имеют одинаковую структуру, только с разными изображениями:
<?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>`
Однако при выборе вкладок с помощью трекбола в моем HTC Desire (зеленая подсветка) вместо светлого используется темное изображение.Как только вкладка действительно выбрана, она становится белой.Что я делаю не так?
Решение
Вам нужно иметь разные предметы для разных состояний.Объединять несколько состояний в одном пункте (как вы это сделали) однозначно неправильно.Ваш XML может выглядеть так:
<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>
Когда дело доходит до рисования вашего объекта, в первую очередь проверяется его состояние.Если он выбран, будет использован первый элемент и все — целевая проверка выполняться не будет (Android находит только первый - нет "наиболее актуальными" - состояние).Но если он не выбран, будет выполнена проверка на сфокусированное состояние.