Долгое время считыватель stackoverflow, первый раз с вопросом. Возникающая у меня проблема кажется глупой, но я не могу найти информацию, которая бы это объясняла.
Я новичок в программировании на Android и работаю над проектом с пользовательским фоном кнопок. Я использую списки состояний для разных кнопок, которые выглядят так:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/button_pressed_background" android:gravity="center"/>
android:state_pressed="true"
</item>
<item>
<bitmap android:src="@drawable/button_focused_background" android:gravity="center"/>
android:state_focused="true"
</item>
<item>
<bitmap android:src="@drawable/button_standard_background" android:gravity="center"/>
android:state_pressed="false"
android:state_focused="false"
</item>
</selector>
В xml, где кнопки объявлены, я просто добавляю строку android:background="@drawable/button_drawable"
, где button_drawable.xml - это список состояний, который можно нарисовать.
Кажется достаточно простым, но во всех случаях кнопки отображаются с фоном, указанным в первом разделе <item>
списка состояний, независимо от их состояния. На самом деле, в приведенном выше примере я мог бы изменить первый раздел <item>
, чтобы вместо него включить android:state_pressed="false"
, а button_pressed_background
по-прежнему отображается! Это как если бы все состояния кнопок были истинными и ложными одновременно.
Я занимаюсь разработкой с использованием эмуляторов, но вижу такое поведение как с эмулятором AVD, так и с Android x86, работающим на Oracle VirtualBox. Есть идеи, почему это произойдет?