Как изменить цвет флажка, отображаемого в xml?

Фон моего флажка указан с помощью 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);

person Boon    schedule 21.09.2016    source источник


Ответы (2)


возможно, это поможет вам.

и я думаю так: android:buttonTint="@color/mybrown" это простой способ

person Paul    schedule 21.09.2016
comment
Это решение не будет работать для уровня API 17 (или, возможно, для уровня API ниже 21). - person Boon; 21.09.2016

попробуй это:

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);
    }
person mohammadreza khalifeh    schedule 21.09.2016