Как изменить цвет CheckBox
по умолчанию на Android?
По умолчанию цвет CheckBox
зеленый, и я хочу изменить этот цвет.
Если это невозможно, сообщите мне, как сделать пользовательский CheckBox
?
Как изменить цвет CheckBox?
Ответ 1
Если ваш minSdkVersion
равен 21+, используйте атрибут android:buttonTint
чтобы обновить цвет флажка:
<CheckBox
...
android:buttonTint="@color/tint_color" />
В проектах, которые используют библиотеку AppCompat и поддерживают версии Android ниже 21, вы можете использовать совместимую версию атрибута buttonTint
:
<CheckBox
...
app:buttonTint="@color/tint_color" />
В этом случае, если вы хотите создать подкласс CheckBox
, не забудьте использовать AppCompatCheckBox
.
ПРЕДЫДУЩИЙ ОТВЕТ:
Вы можете изменить CheckBox
рисования, используя атрибут android:button="@drawable/your_check_drawable"
.
Ответ 2
Вы можете изменить цвет непосредственно в XML. Используйте buttonTint
для поля: (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" />
Ответ 3
вы можете установить тему Android для флажка, чтобы получить нужный цвет в ваших стилях. xml add:
<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
Ответ 4
Программная версия:
int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {color_for_state_checked, color_for_state_normal}
CompoundButtonCompat.setButtonTintList(checkbox, new ColorStateList(states, colors));
Ответ 5
Используйте 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>
Ответ 6
Я бы предложил использовать его стиль в андроиде как способ настроить встроенные андроидные представления, добавить новый стиль в свой проект:
<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"
надеюсь, что это поможет.
Ответ 7
Добавьте buttonTint в свой XML
<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" />
Ответ 8
Добавьте эту строку в свой styles.xml
файл:
<style>
<item name="android:colorAccent">@android:color/holo_green_dark</item>
</style>
Ответ 9
ButtonTint работал для меня, попробуйте
андроид: buttonTint = "@цвет/белый"
<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"/>
Ответ 10
У меня столкнулась с такой же проблемой, я получил решение, использующее ниже технику. Скопируйте btn_check.xml
из android-sdk/platforms/android-#(version)/data/res/drawable
в выпадающую папку проекта и измените состояния изображения 'on' и 'off' на свои пользовательские изображения.
Тогда вашему 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/..."
Ответ 11
Вы можете изменить цвет checkbox
используя одну строку кода
android:buttonTint="@color/app_color"//whatever color
Ответ 12
вы можете создать свой собственный xml в drawable и использовать его как android: background = "@drawable/your_xml"
в том, что вы можете задать граничный угол.
<item>
<shape>
<gradient
android:endColor="#fff"
android:startColor="#fff"/>
<corners
android:radius="2dp"/>
<stroke
android:width="15dp"
android:color="#0013669e"/>
</shape>
</item>
Ответ 13
Привет. Это код темы для темы "Темная тема" и "Света".
<attr name="buttonsearch_picture" format="reference"/>
<attr name="buttonrefresh_picture" format="reference"/>
<style name="Theme.Light" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/white</item>
<item name="android:windowActionBar">false</item>
<item name="android:textColorPrimary">@color/black</item>
<item name="android:textColorSecondary">@color/black</item>
<item name="android:textColor">@color/material_gray_800</item>
<item name="actionOverflowButtonStyle">@style/LightOverflowButtonStyle</item>
<item name="buttonsearch_picture">@drawable/ic_search_black</item>
<item name="buttonrefresh_picture">@drawable/ic_refresh_black</item>
</style>
<style name="Theme.Dark" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/white</item>
<item name="android:windowActionBar">false</item>
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/material_gray_500</item>
<item name="android:textColor">@color/material_gray_800</item>
<item name="actionOverflowButtonStyle">@style/DarkOverflowButtonStyle</item>
<item name="buttonsearch_picture">@drawable/ic_search_white</item>
<item name="buttonrefresh_picture">@drawable/ic_refresh_white</item>
<item name="android:colorBackground">#ffffff</item>
<item name="android:alertDialogTheme">@style/LightDialogTheme</item>
<item name="android:alertDialogStyle">@style/LightDialogTheme</item>
<!-- <item name="android:textViewStyle">@style/AppTheme.Widget.TextView</item>-->
<item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>
Если вы хотите изменить цвет флажка, атрибут colorAccent будет использоваться для проверенного состояния, а "android: textColorSecondary" будет использоваться для снятия отметки состояния.
"actionOverflowButtonStyle" будет использовать для изменения цвета значка переполнения на панели действий.
"buttonsearch_picture" атрибут будет использоваться для цвета оттенка изменения кнопки Action в панели действий. Это пользовательский атрибут в style.xml
<attr name="buttonsearch_picture" format="reference"/>
То же самое для кнопки обновления, которую я использую в своем приложении.
"android: popupMenuStyle" используется, чтобы получить стиль всплывающего меню темы Light в темной теме.
<style name="PopupMenu" parent="Theme.AppCompat.Light.NoActionBar">
</style>
И это панель инструментов, которую я использую в своем приложении Rocks Player.
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:contentInsetStart="0dp"
android:title="Rocks Player"
android:layout_width="match_parent"
android:elevation="4dp"
android:layout_height="48dp"
app:layout_scrollFlags="scroll|enterAlways"
android:minHeight="48dp"
app:titleTextAppearance="@style/Toolbar.TitleText"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="?attr/colorPrimary"
>
</android.support.v7.widget.Toolbar>
Темы: -
<style name="AppTheme0" parent="Theme.Light">
<item name="colorPrimary">#ffffff</item>
<item name="colorPrimaryDark">#cccccc</item>
<item name="colorAccent">#0294ff</item>
</style>
<style name="AppTheme1" parent="Theme.Dark">
<item name="colorPrimary">#4161b2</item>
<item name="colorPrimaryDark">#4161b2</item>
<item name="colorAccent">#4161b2</item>
</style>
Ответ 14
создайте xml Drawable resource file
под res->drawable
и назовите его, например, checkbox_custom_01.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/checkbox_custom_01_checked_white_green_32" />
<item
android:state_checked="false"
android:drawable="@drawable/checkbox_custom_01_unchecked_gray_32" />
</selector>
Загрузите свои собственные файлы изображений флажка (я рекомендую png) в вашу папку res->drawable
.
Затем зайдите в свой файл макета и измените свой флажок на
<CheckBox
android:id="@+id/checkBox1"
android:button="@drawable/checkbox_custom_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="CheckBox"
android:textSize="32dip"/>
вы можете настроить что угодно, пока android:button
указывает на правильный файл XML, который вы создали ранее.
ПРИМЕЧАНИЕ к NEWBIES: хотя это необязательно, тем не менее, хорошая практика - назвать ваш флажок уникальным идентификатором во всем дереве раскладки.
Ответ 15
Вы можете изменить цвет фона <CheckBox>
, вставив его внутри <LinearLayout>
. Затем измените цвет фона <LinearLayout>
на нужный вам цвет.
Ответ 16
Вы должны попробовать под кодом. Он работает для меня.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/checked"
android:state_checked="true">
<color android:color="@color/yello" />
</item>
<!-- checked -->
<item android:drawable="@drawable/unchecked"
android:state_checked="false">
<color android:color="@color/black"></color>
</item>
<!-- unchecked -->
<item android:drawable="@drawable/checked"
android:state_focused="true">
<color android:color="@color/yello"></color>
</item>
<!-- on focus -->
<item android:drawable="@drawable/unchecked">
<color android:color="@color/black"></color>
</item>
<!-- default -->
</selector>
и CheckBox
<CheckBox
Button="@style/currentcy_check_box_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:text="@string/step_one_currency_aud" />
Ответ 17
Если вы собираетесь использовать значки android, как описано выше.
android:button="@android:drawable/..."
.. это хороший вариант, но для этого нужно работать - я обнаружил, что вам нужно добавить логику переключения, чтобы показать/скрыть галочку, например:
checkBoxShowPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// checkbox status is changed from uncheck to checked.
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int btnDrawable = android.R.drawable.checkbox_off_background;
if (isChecked)
{
btnDrawable = android.R.drawable.checkbox_on_background;
}
checkBoxShowPwd.setButtonDrawable(btnDrawable);
}
});
Ответ 18
Вы можете использовать следующие два свойства в "colors.xml"
<color name="colorControlNormal">#eeeeee</color>
<color name="colorControlActivated">#eeeeee</color>
colorControlNormal предназначен для нормального просмотра флажка, а colorControlActivated - для тех случаев, когда установлен флажок.
Ответ 19
100% надежный подход.
В моем случае у меня не было доступа к исходному файлу XML-разметки, так как я получил Checkbox от сторонней библиотеки MaterialDialog. Поэтому я должен решить это программно.
- Создайте ColorStateList в xml:
Рез/цвет/checkbox_tinit_dark_theme.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white"
android:state_checked="false"/>
<item android:color="@color/positiveButtonBg"
android:state_checked="true"/>
</selector>
-
Затем примените его к флажку:
ColorStateList darkStateList = ContextCompat.getColorStateList(getContext(), R.color.checkbox_tint_dark_theme); CompoundButtonCompat.setButtonTintList(checkbox, darkStateList);
PS Кроме того, если кому-то интересно, вот как вы можете получить свой флажок в диалоговом окне MaterialDialog (если вы установите его с помощью .checkBoxPromptRes(...)
):
CheckBox checkbox = (CheckBox) dialog.getView().findViewById(R.id.md_promptCheckbox);
Надеюсь это поможет.
Ответ 20
Существует гораздо более простой способ установить цвет программно. Используйте метод ниже, Checkbox.setButtonTintList(ColorStateList.valueOf(getContext(). GetColor (R.color.yourcolor)))
Ответ 21
Используйте это для динамического изменения фона флажка в вашем коде Java
//Настройка цвета фона на флажок. checkbox.setBackgroundColor(Color.parseColor( "# 00e2a5"));
Этот ответ был с этого сайта. Вы также можете использовать этот сайт для преобразования вашего цвета RGB в значение Hex, необходимое для подачи в parseColor