我们知道在 android 应用程序中,我们可以通过使用SetButtonDrawable
xml 文件来更改复选框的背景颜色。
此 xml 文件可以使用渐变或在可绘制对象中使用图像的简单文件来定义。本文展示了一个带有渐变的示例:Android: Set color of CheckBox
这也是我使用的另一个示例:
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#9b9b9b" />
<corners android:radius="5dp" />
</shape>
</item>
<item android:top="2dp" android:left="1.5dp" >
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="5dp" />
<size android:height="20dp" android:width="20dp" />
</shape>
</item>
<item android:top="2dp" android:bottom="1dp" android:left="1.5dp">
<shape android:shape="rectangle">
<gradient android:startColor="#ff7dbce9" android:endColor="#ff2578b3" android:angle="270" />
<corners android:radius="5dp" />
<size android:height="20dp" android:width="20dp" />
</shape>
</item>
<item android:top="2dp" android:bottom="1dp" android:left="1.5dp">
<shape android:shape="rectangle">
<gradient android:startColor="#ff7dbce9" android:endColor="#ff2578b3" android:angle="270" />
<corners android:radius="5dp" />
<size android:height="20dp" android:width="20dp" />
</shape>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/tick_red_icon"/>
</item>
</layer-list>
</item>
<item >
<layer-list>
<item>
<shape android:shape="rectangle">
<solid android:color="#9b9b9b" />
<corners android:radius="5dp" />
</shape>
</item>
<item android:top="2dp" android:left="1.5dp" >
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="5dp" />
<size android:height="20dp" android:width="20dp" />
</shape>
</item>
<item android:top="2dp" android:bottom="2dp" android:left="1.5dp">
<shape android:shape="rectangle">
<solid android:color="#e5e4e4" />
<corners android:radius="5dp" />
<size android:height="20dp" android:width="20dp" />
</shape>
</item>
</layer-list>
</item>
我们还知道,如果我们想改变渐变颜色,我们需要DrawableGradient
在运行时将其定义为 a ,然后使用它。
问题是这样的:我们如何定义一些像上面这样复杂的渐变,DrawableGradient
以便能够在运行时改变它们的颜色?
或者如果有一个不好的解决方案,有没有更好的解决方案,我们设置复选框的背景颜色并可以在运行时更改它们的颜色?