我在 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 代码。我想重新表述我的问题,以便我需要知道如何创建选择器,完成三个状态和每个状态的不同形状特征。答案不需要显示所有三种状态。一旦我知道如何做一个,我就能弄清楚其余的。