Вопрос по android-widget, android-layout, android – Изменение цвета по умолчанию для Android CheckBox Check Mark

13

Как изменить цвет по умолчанию для флажка Android с зеленых флажков на синий для определенного флажка?

Кажется, дубликатthis question. nTraum
Возможный дубликатHow to change the color of a CheckBox? afathman
Разница в том, что этот вопрос имеет реальный и новый ответ. Code Droid

Ваш Ответ

2   ответа
22

К сожалению, изменение цвета не является простым атрибутом. Галочка - это изображение, поэтому вам нужно создать собственное изображение. Взгляните на этопример

Создайте 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/star_down" />
    <item android:state_checked="false" android:drawable="@drawable/star" />
</selector>

сохранить этот файл XML в вашемres\drawables\ папка. Затем внутри вашего файла макета примените его к вашему checkBox следующим образом:

<CheckBox
    android:text="Custom CheckBox"
    android:button="@drawable/checkbox_selector"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

В этом примере вы назвали свой XML-файл селектора "checkbox_selector.xml". и вам также понадобятся star_down.png и star.png в папке drawables. Вы можете использовать эту технику для создания различных цветных флажков, изменяя системные изображения флажков на любой нужный вам цвет и ссылаясь на измененные файлы png в селекторе.

Хорошая точка зрения. Я буду следовать вашим советам в будущем.
Хотя пример, на который вы ссылаетесь, хороший. Стоит отметить, что ссылки не работают, как правило, в ответах со ссылками, которые вы захотите опубликовать и по этой ссылке. Поскольку этот ответ будет долгое время, он стал бы бесполезным для людей в будущем, если бы связь сгнила. Теперь это все еще поможет им достичь того, что они хотят.
6

Это легко сделать в XML с помощьюbuttonTint (на уровне API 23):

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:buttonTint="@color/COLOR_HERE" />

и, как указал Николь, вы можете сделать это, используяappCompatCheckbox v7 для старых API:

<android.support.v7.widget.AppCompatCheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:buttonTint="@color/COLOR_HERE" /> 
используйте ответ HexAndBugs
Вы можете сделать это на уровне API 7, используя appcompat и<android.support.v7.widget.AppCompatCheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" app:buttonTint="@color/COLOR_HERE" />
в этом случае отключенные флажки остаются яркими, не меняйте цвет на серый
@AlexanderTumanin как поменять непроверенный цвет на серый?

Похожие вопросы