如何更改xml中指定的复选框drawable的颜色?

时间:2016-09-21 13:46:53

标签: android android-6.0-marshmallow android-4.4-kitkat

我的Checkbox的背景是通过drawable xml指定的,我想通过代码更改这些项目的颜色。 Android中的不同控件似乎有不同的方式来设置其颜色。

<Checkbox android:button="@drawable/custom_checkbox" />

在drawable / custom_checkbox.xml中:

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

关于SO的大多数答案都停留在上面的解决方案中。我可以通过以下代码更改颜色,但此代码在某些API级别(例如级别17)中不起作用。我想要一些全面运作的东西。

Drawable d = DrawableCompat.wrap(checkbox.getBackground());
DrawableCompat.setTint(d, newColor);

2 个答案:

答案 0 :(得分:0)

也许this会帮助你。

我认为:android:buttonTint="@color/mybrown"是一种简单的方式

答案 1 :(得分:0)

试试这个:

Drawable d = DrawableCompat.wrap(checkbox.getBackground());
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        DrawableCompat.setTint(d, newColor);

    } else {
        d.mutate().setColorFilter(newColor, PorterDuff.Mode.SRC_IN);
    }