我的活动中有 8 个按钮。我正在寻找的是,按钮具有默认背景,当单击按钮时,背景颜色应更改为其他颜色。这部分非常简单。但是,当我单击任何其他按钮时,第一个按钮的背景颜色应该变回默认颜色。我知道这将使用“选择器状态”来完成,但我不太确定如何实现它。我读得越多,我就越困惑。
现在,我拥有的 xml 如下:在 drawable 文件夹中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blue" android:state_pressed="true"/>
<item android:drawable="@color/dark_grey" android:state_focused="true"/>
<item android:drawable="@drawable/image_border"/>
</selector>
xml 中的 drawable/image_border 用于定义按钮的形状。下面是image_border.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/dark_grey" />
<stroke
android:width="4dp"
android:color="@color/light_grey" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
有人可以帮助我如何更改 xml 以按照我需要的方式行事吗?
[编辑 1]
以下所有答案都指向类似的解决方案。这是我所做的更改。但是,当我按下按钮时,它会变成指定的颜色,但会立即变回默认颜色。
button_background_blue.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_border_blue" android:state_pressed="true"/>
<item android:drawable="@color/dark_grey" android:state_focused="true"/>
<item android:drawable="@drawable/image_border"/>
</selector>
image_border_blue.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/blue" />
<stroke
android:width="4dp"
android:color="@color/blue" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
有什么想法吗?