1. ホーム
  2. android

Android : ボタンの文字色と背景色を変更する

2023-11-07 14:40:28

質問

ボタンが押されたときに、テキストと背景の色をxmlで変更するにはどうすればよいですか?

テキストの色を変更するには、次のようにします。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="mycolor"/>
    <item android:color="mycolor2"/>
</selector>

背景を変更するために私が行うことができます(drawable参照を持つセレクタ/アイテムでそれを使用する):

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FF0079FF" />
</shape>

しかし、どうすれば両方を実現できるのでしょうか?例えば、:

  • デフォルト:黒文字/白背景
  • 押下時:白文字/青背景

EDIT : 回答

背景色と文字色が別々に管理されていることをすっかり忘れていたので、このような方法をとりました。

<Button
    android:textColor="@color/filtersbuttoncolors"
    android:background="@drawable/mybackgroundcolors" />

mybackgroundcolors.xmlで背景を管理し、filtersbuttoncolors.xmlでテキストの色を管理します。両方のxmlファイルで、私はステータス(押された、選択された、デフォルト)を管理します。

どのように解決するのですか?

デフォルトでは白、押されると黒になるドローアブルの例です。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid
                android:color="#1E669B"/>
            <stroke
                android:width="2dp"
                android:color="#1B5E91"/>
            <corners
                android:radius="6dp"/>
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp"/>
        </shape>

    </item>
    <item>
        <shape>
            <gradient
                android:angle="270"
                android:endColor="#1E669B"
                android:startColor="#1E669B"/>
            <stroke
                android:width="4dp"
                android:color="#1B5E91"/>
            <corners
                android:radius="7dp"/>
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp"/>
        </shape>
    </item>
</selector>