Как изменить цвет CheckBox? - PullRequest
178 голосов
/ 02 мая 2011

Как изменить цвет по умолчанию CheckBox в Android?
По умолчанию цвет CheckBox зеленый, и я хочу изменить этот цвет.
Если это невозможно, скажите, пожалуйста, каксделать кастом CheckBox?

Ответы [ 20 ]

368 голосов
/ 20 ноября 2015

Вы можете изменить цвет непосредственно в XML. Используйте buttonTint для поля: (с уровня API 23)

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

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

<android.support.v7.widget.AppCompatCheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:buttonTint="@color/COLOR_HERE" /> 
110 голосов
/ 15 апреля 2016

вы можете установить андроид тему флажка, чтобы получить нужный цвет в вашем styles.xml добавить:

<style name="checkBoxStyle" parent="Base.Theme.AppCompat">
    <item name="colorAccent">CHECKEDHIGHLIGHTCOLOR</item>
    <item name="android:textColorSecondary">UNCHECKEDCOLOR</item>
</style>

затем в вашем файле макета:

<CheckBox
     android:theme="@style/checkBoxStyle"
     android:id="@+id/chooseItemCheckBox"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>

в отличие от использования android:buttonTint="@color/CHECK_COLOR" этот метод работает под Api 23

71 голосов
/ 02 мая 2011

Если ваш minSdkVersion равен 21+, используйте атрибут android:buttonTint для обновления цвета флажка:

<CheckBox
  ...
  android:buttonTint="@color/tint_color" />

В проектах, которые используют библиотеку AppCompat и поддерживают версии Android ниже 21, вы можете использовать compatверсия атрибута buttonTint:

<CheckBox
  ...
  app:buttonTint="@color/tint_color" />

В этом случае, если вы хотите создать подкласс CheckBox, не забудьте использовать AppCompatCheckBox.

ПРЕДЫДУЩАЯОТВЕТ:

Вы можете изменить CheckBox s, используя атрибут android:button="@drawable/your_check_drawable".

41 голосов
/ 07 сентября 2016

Программная версия:

int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {color_for_state_checked, color_for_state_normal}
CompoundButtonCompat.setButtonTintList(checkbox, new ColorStateList(states, colors));
27 голосов
/ 27 сентября 2017

Используйте buttonTint, чтобы изменить цвет кнопки и селектора цвета для версии 21+ API.

<android.support.v7.widget.AppCompatCheckBox
                android:id="@+id/check"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:buttonTint="@color/checkbox_filter_tint"
                tools:targetApi="21"/>

Рез / цветы / checkbox_filter_tint.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/light_gray_checkbox"
          android:state_checked="false"/>
    <item android:color="@color/common_red"
          android:state_checked="true"/>
</selector>
15 голосов
/ 29 июля 2016
<CheckBox
            android:id="@+id/chk_remember_signup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:buttonTint="@android:color/white"
            android:text="@string/hint_chk_remember_me" />
15 голосов
/ 30 января 2017

Я бы предложил использовать подход стиля в Android как способ настройки встроенных представлений Android, добавив новый стиль в ваш проект:

<style name="yourStyle" parent="Base.Theme.AppCompat">
    <item name="colorAccent">your_color</item> <!-- for uncheck state -->
    <item name="android:textColorSecondary">your color</item> <!-- for check state -->
</style>

и добавьте назначьте этот стиль к теме флажка: Android: тема = "@ стиль / youStyle"

надеюсь, это поможет.

11 голосов
/ 11 июля 2015

Добавьте эту строку в ваш styles.xml файл:

<style>
    <item name="android:colorAccent">@android:color/holo_green_dark</item>
</style>
8 голосов
/ 05 июля 2018

buttonTint работал у меня попробуйте

android: buttonTint = "@ color / white"

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:id="@+id/agreeCheckBox"
    android:text="@string/i_agree_to_terms_s"
    android:buttonTint="@color/white"
    android:layout_below="@+id/avoid_spam_text"/>
7 голосов
/ 16 июля 2013

Я столкнулся с той же проблемой, я получил решение, используя приведенную ниже технику. Скопируйте btn_check.xml из android-sdk/platforms/android-#(version)/data/res/drawable в папку для рисования вашего проекта и измените состояния «включено» и «выключено» для ваших пользовательских изображений.
Тогда вашему XML просто понадобится android:button="@drawable/btn_check"

<CheckBox
    android:button="@drawable/btn_check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="true" />

Если вы хотите использовать другие значки Android по умолчанию, вы можете использовать:

android:button="@android:drawable/..."
...