Нажата кнопка настройки цвета фона Android

#android #selector #android-imagebutton #android-shape

#Android #селектор #android-imagebutton #android-shape

Вопрос:

Я хотел бы изменить цвет фона моей кнопки ImageButton при нажатии события.

Вот что я сделал :

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <solid android:color="@color/rose_normal" />
    <solid
        android:state_pressed="true"
        android:color="@color/rose_fonce" />

    <stroke
        android:width="1sp"
        android:color="@color/rose_fonce" />

</shape>
 

Моя кнопка хорошо отображается в цвете «rose_normal», но никогда не отображается в цвете «rose_fonce» при нажатии.

В чем проблема?

РЕДАКТИРОВАТЬ: ПРОБЛЕМА РЕШЕНА :

Создайте один XML-файл с именем background_rounded_button.xml :

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/rounded_button_rose_fonce" android:state_selected="true"></item>
    <item android:drawable="@drawable/rounded_button_rose_fonce" android:state_pressed="true"></item>
    <item android:drawable="@drawable/rounded_button_rose_normal"></item>

</selector>
 

rounded_button_rose_fonce.xml :

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <solid android:color="@color/rose_fonce" />

    <stroke
        android:width="1sp"
        android:color="@color/rose_fonce" />

</shape>
 

rounded_button_rose_normal.xml :

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval" >

    <solid android:color="@color/rose_normal" />

    <stroke
        android:width="1sp"
        android:color="@color/rose_fonce" />

</shape>
 

И, наконец, применить фон для кнопки :

  <ImageButton
        android:id="@ id/all_annonce_button_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="10dp"
        android:layout_marginRight="10dp"
        android:background="@drawable/background_rounded_button.xml"
        android:padding="16dp"
        android:src="@drawable/ic_action_search" />
 

Ответ №1:

Проблема в том, что вы используете не селектор, а фигуру.

Попробуйте этот код (button_selector.xml , положите его в свою drawable папку):

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/rose_fonce" android:state_selected="true"></item>
    <item android:drawable="@color/rose_fonce" android:state_pressed="true"></item>
    <item android:drawable="@color/rose_normal"></item>

</selector>
 

При установке этого селектора в качестве фона a Button он будет иметь цвет «rose_normal» в нормальном состоянии и цвет «rose_fonce» при нажатии или выборе.

Пример:

 <Button
    android:background="@drawable/button_selector" />
 

Комментарии:

1. Спасибо, все работает нормально, но я потерял овальную форму своей кнопки. Как я могу повторно добавить этот овал?

2. @wawanopoulos, попробуйте установить свое пользовательское изображение с двумя овалами вместо цвета.