Drawable.setState () Как я могу управлять конкретным состоянием?

У меня есть такая возможность:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:state_window_focused="true" android:drawable="@drawable/seek_thumb_pressed" /> <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/seek_thumb_selected" /> <item android:state_selected="true" android:state_window_focused="true" android:drawable="@drawable/seek_thumb_selected" /> <item android:drawable="@drawable/seek_thumb_normal" /> 

В коде, как установить конкретное состояние моего Drawable? Я хотел бы установить его в состояние state_pressed = true.

Понял. Комментарий отсюда помог: Android: как программно обновить селектор (StateListDrawable)

Поэтому Drawable.setState() принимает массив в целых числах. Эти целые числа представляют состояние допустимого. Вы можете передать любой интересующий вас. После того, как ints передаст в соответствие «item» из списка состояний, выберете вытягиваемые ничьи в этом состоянии.

Это имеет смысл в коде:

 int[] state = new int[] {android.R.attr.state_window_focused, android.R.attr.state_focused}; minThumb.setState(state); 

Обратите внимание, что мой список состояний state_pressed="true" как state_pressed="true" и android:state_window_focused="true" . Поэтому я должен передать оба эти значения int в setState . Когда я хочу его очистить, я просто minThumb.setState(new int[]{});

Не хватает очков для комментариев, так что это просто дополнение к тому, что сказал разработчик Android. Для определенных состояний, таких как state_enabled, нет очевидного способа установить противоположное значение этого состояния (например, нет state_disabled). Чтобы указать отрицательное или противоположное состояние, просто передайте отрицательное значение ресурса для этого состояния.

 int[] state = new int[] {-android.R.attr.state_enabled}; //Essentially state_disabled 

Затем передайте этот целочисленный массив в метод setState (), как обычно.

 minThumb.setState(state); 
Intereting Posts
Подключить / Подключить Bluetooth-гарнитуру и Android Где я могу найти и загрузить иконки Material Design для моего Android-приложения? Рабочие часы Android Studio / IntelliJ IDEA Полноэкранное разрешение для Android для игр libgdx Мне нужно объяснение для кода «начинающих игр для Android» Макет разметки для текстового представления программно Является ли значок значка панели инструментов доступным? IabResult: ошибка обновления инвентаря (запрос принадлежащих предметов) Возможно ли построить APK с телефона? Создавайте ошибки с новыми параметрами kotlin 1.1, kapt cant parse databinding params Несоответствия выборки AudioTrack Как управлять состоянием Android MediaPlayer, ошибками и исключениями? Создание ListView с настраиваемыми элементами списка программным способом в Android – нет элемента списка элементов xml «Обрезанные или прикрепленные представления не могут быть переработаны», поскольку поддержка lib 25.0.0 Android-инструмент для студии, который содержит дубликаты или аналогичные части кода?