【kotlin】ボタンの色や形を変える

ども!ぱにーにです!

アプリ開発で副業収入を狙ってます。

まだ駆け出しで勉強中ですけどね・・・

 

開発メモです。

ボタンの色の変え方が、ググってもなかなかうまくいかなくて、

試行錯誤して最終的に行きついた答えです。

これでうまくいきました!


①layoutのxmlでボタンの設定をする
「app:backgroundTint="@null"」がキモです!
app:backgroundTintでカラー指定するとボタンの色を変えられるようですが、
"@null"を指定することで色なし状態?にできるようです。
この設定をしないと、ボタンタッチしたとき等のselectorがうまく動きませんでした。

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:backgroundTint="@null"
    android:background="@drawable/button_background" />

 

②drawableに「button_background.xml」を作成
ここでselectorを使うことでボタンの状況が変わったときにビジュアルを変更することが可能です。
android:state_pressed="true"でボタンが押された状態
 ※話すとすぐにfalseになっているようです。
android:state_pressed="true"でボタンを押していない状態

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_shape_background_true"
        android:state_pressed="true"
        android:state_enabled="true"/>
    <item android:drawable="@drawable/button_shape_background_false"
        android:state_pressed="false"
        android:state_enabled="true"/>
</selector>


③drawableに「button_background_true.xml」を作成
②でボタンを押した状態(android:state_pressed="true")のときに呼び出される内容を定義

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <!-- ボタンの背景色を設定 -->
            <solid android:color="#FF0000" />
            <!-- ボタンの角丸を設定 -->
            <corners android:radius="32dp" />
        </shape>
    </item>
</selector>


④drawableに「button_background_false.xml」を作成
②でボタンを押していない状態(android:state_pressed="false")のときに呼び出される内容を定義

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <!-- ボタンの背景色を設定 -->
            <solid android:color="#00FF00" />
            <!-- ボタンの角丸を設定 -->
            <corners android:radius="32dp" />
        </shape>
    </item>
</selector>