0

xml で定義されたカスタム ボタンがあります。実行時にストロークの色とグラデーションの色を変更できるように変更したいと考えています。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <gradient android:startColor="#330000"
                android:endColor="#000000" android:angle="270" />
            <stroke android:width="1dp" android:color="#aa0000" />
            <corners android:radius="8dp" />
            <padding android:left="2dp" android:top="2dp"
                android:right="2dp" android:bottom="2dp" />
        </shape>
    </item>
    <item android:state_focused="true">
        <shape>
            <gradient android:endColor="#330000"
                android:startColor="#000000" android:angle="270" />
            <stroke android:width="1dp" android:color="#aa0000" />
            <corners android:radius="8dp" />
            <padding android:left="2dp" android:top="2dp"
                android:right="2dp" android:bottom="2dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient android:endColor="#000000"
                android:startColor="#000000" android:angle="270" />
            <stroke android:width="1dp" android:color="#aa0000" />
            <corners android:radius="8dp" />
            <padding android:left="2dp" android:top="2dp"
                android:right="2dp" android:bottom="2dp" />
        </shape>
    </item>

</selector>

Drawable を取得する方法を知っています

Drawable d = getResources().getDrawable(R.drawable.custom_button);

そして、次のようなもの

 btnSettings.setBackgroundDrawable(d);

私が理解できないのは、状態を取得してから各状態の形状を取得する方法です。そして最後に、線の色やグラデーションの色などの形状属性を変更します。

編集: これについて少し調べたところ、この xml コードをすべて Java に置き換える必要があるようです。3 つの状態と各状態の異なる形状特性を備えたセレクターの作成方法を知る必要があるように、質問を言い換えたいと思います。答えは 3 つの状態すべてを示す必要はありません。1 つを行う方法を確認したら、残りを把握できます。

4

0 に答える 0