アクティビティには 8 つのボタンがあります。私が探しているのは、ボタンにはデフォルトの背景があり、ボタンをクリックすると背景色が他の色に変わるはずです。この部分はかなり簡単です。しかし、他のボタンをクリックすると、最初のボタンの背景色がデフォルトの色に戻るはずです。これが「セレクター状態」を使用して行われることは理解していますが、それを実装する方法がよくわかりません。それについて読めば読むほど、私は混乱します。
現在、私が持っているxmlは次のとおりです:ドローアブルフォルダー内
<?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>
何かご意見は?