У меня есть ImageButton с фоновым изображением, которое имеет некоторую прозрачность. По умолчанию кнопка получает серый фон, где пиксели прозрачности - из-за темы Holo.Light. Я попытался настроить цвет фона кнопки на прозрачный с помощью метода setBackgroundColor(Color.TRANSPARENT)
. Это прекрасно работает и делает то, что мне нужно, но теперь моя кнопка больше не имеет светло-голубого цвета при фокусировке/нажатии и выглядит довольно плоской (вокруг нее нет границ, поэтому она выглядит как изображение).
Я googled и увидел, что вы можете назначить селектора, как описано здесь, но это означало бы, что я должен указать изображение на состояние кнопки, а я не хочу этого делать. Я хочу наследовать фокусы/нажатые цвета из темы, но перезаписать обычный фон кнопки (если не нажат/сфокусирован) на прозрачный, а не серый. Как я могу это достичь? Представьте рабочий пример, поскольку я пробовал много разных комбинаций без успеха.
Edit Спасибо всем за помощь. Я понял, как сделать эту работу без необходимости воссоздавать одно и то же изображение с сосредоточенными и нажатыми состояниями для каждой кнопки!
Вот мое решение:
Моя кнопка определяется как:
<ImageButton
android:id="@+id/ImageButton05"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button" />
И мой фоновый XML файл (под названием button.xml) определяется следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:drawable="@drawable/btn_default_pressed_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item android:state_focused="true">
<layer-list>
<item android:drawable="@drawable/btn_default_focused_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item android:state_hovered="true">
<layer-list>
<item android:drawable="@drawable/btn_default_focused_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
<item>
<layer-list>
<item android:drawable="@drawable/btn_default_normal_holo_light"></item>
<item android:drawable="@drawable/network_wifi"></item>
</layer-list>
</item>
</selector>