2010-10-23 6 views
0

Приложение для Android, которое использует TabActivity для отображения его содержимого, имеет 4 вкладки, которые используют список состояний, пригодный для отображения. Все они имеют ту же структуру, только с различными изображениями:В объявлении состояния штата Android, state_focused игнорируется

<?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

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