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);

我不知道如何获得状态,然后是每个状态的形状。然后最终修改形状属性,例如描边颜色和渐变颜色。

编辑:在研究了一下之后,看起来我几乎需要用 java 替换所有这些 xml 代码。我想重新表述我的问题,以便我需要知道如何创建选择器,完成三个状态和每个状态的不同形状特征。答案不需要显示所有三种状态。一旦我知道如何做一个,我就能弄清楚其余的。

4

0 回答 0