В рисуемом списке состояний Android state_focused игнорируется.

StackOverflow https://stackoverflow.com/questions/4004947

  •  25-09-2019
  •  | 
  •  

Вопрос

Мое приложение для 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 находит только первый - нет "наиболее актуальными" - состояние).Но если он не выбран, будет выполнена проверка на сфокусированное состояние.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top