В отображаемом списке состояний Android игнорируется state_focused - PullRequest
0 голосов
/ 23 октября 2010

Мое приложение 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 (зеленая подсветка) вместо светлого используется темное изображение. Как только вкладка фактически выбрана, она становится белой. Что я делаю не так?

1 Ответ

1 голос
/ 22 ноября 2010

Вам нужно иметь разные предметы для разных состояний. Объединение нескольких состояний в одном предмете (как вы это сделали) определенно неправильно. Ваш 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 находит только first - не «наиболее актуально» - состояние). Но если он не выбран, будет выполнена проверка состояния фокуса.

...