Можно ли установить фоновое изображение внутри элемента ?

#android

#Android

Вопрос:

У меня есть стиль кнопки, определенный следующим образом:

 <style name="button_style">
    <item name="android:textColor">#ffffff</item>
    <item name="android:background">@drawable/button_on_red</item>
</style>
 

Мне интересно, могу ли я настроить фоновое изображение внутри этого, например:

 <style name="button_style">
            <item name="android:background_when_pressed">@drawable/button_off_red</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:background">@drawable/button_on_red</item>
</style>
 

Спасибо.

Ответ №1:

Вы захотите использовать то, что называется «выводом списка состояний». Вы бы создали чертеж в виде XML-файла, подобного этому:

button_states.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
 

Для каждого состояния вы указываете, какой объект рисования использовать на кнопке. Затем вы используете этот XML-файл в качестве фона для своей кнопки следующим образом:

 <style name="button_style">
    <item name="android:textColor">#ffffff</item>
    <item name="android:background">@drawable/button_states</item>
</style>
 

Для получения более подробной информации ознакомьтесь с этой документацией.