Как изменить цвет флажка?
как изменить значение по умолчанию CheckBox
цвет в Android?
По умолчанию CheckBox
цвет зеленый, и я хочу изменить этот цвет.
Если это невозможно, пожалуйста, скажите мне, как сделать заказ CheckBox
?
18 ответов
вы можете покрасить непосредственно в 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" />
вы можете установить Android тему флажка, чтобы получить цвет, который вы хотите в ваших стилях.добавьте XML-код :
<style name="checkBoxStyle" parent="Base.Theme.AppCompat">
<item name="colorAccent">CHECKEDHIGHLIGHTCOLOR</item>
<item name="android:textColorSecondary">UNCHECKEDCOLOR</item>
</style>
затем в файле layout :
<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
программная версия:
int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {color_for_state_checked, color_for_state_normal}
CompoundButtonCompat.setButtonTintList(checkbox, new ColorStateList(states, colors));
используйте buttonTint и селектор цвета
<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"/>
res/colors / 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>
<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" />
добавьте эту строку в свой :
<style>
<item name="android:colorAccent">@android:color/holo_green_dark</item>
</style>
Я бы предложил использовать подход стиля в 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: theme= "@style / youStyle"
надеюсь, что это помогает.
Я столкнулся с той же проблемой, я получил решение, используя ниже technic. Скопируйте btn_check.xml
С android-sdk/platforms/android-#(version)/data/res/drawable
в папку 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/..."
buttonTint работал для меня попробовать
android: 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"/>
вы можете создать свой собственный xml в drawable и использовать это как android: background= "@drawable / your_xml"
в этом вы можете дать border corner все
<item>
<shape>
<gradient
android:endColor="#fff"
android:startColor="#fff"/>
<corners
android:radius="2dp"/>
<stroke
android:width="15dp"
android:color="#0013669e"/>
</shape>
</item>
Привет это код темы для темной темы и светлой темы.
<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" будет использоваться для изменения оттенка цвета кнопки действия в панели действий.Это обычай Атрибут в стиле.в XML
<attr name="buttonsearch_picture" format="reference"/>
то же самое для кнопки обновления, которую я использую в своем приложении.
атрибут"android:popupMenuStyle" используется для получения стиля всплывающего меню Light theme в темной теме.
<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>
мы можем изменить цвет флажка, используя строку кода
android: buttonTint= "@color / app_color " / / любой цвет
вы можете изменить цвет фона элемента <CheckBox>
путем встраивания его в <LinearLayout>
. Затем измените цвет фона <LinearLayout>
к цвету вы хотите.
Если вы собираетесь использовать значки 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);
}
});
создать 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) в свой .
затем перейдите в файл макета и установите флажок
<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-файл, созданный ранее.
примечание для новичков: хотя это не обязательно, тем не менее хорошая практика называть ваш флажок с уникальным идентификатором во всем дереве макета.
в разделе "цвета" можно использовать следующие два свойства.XML-код"
<color name="colorControlNormal">#eeeeee</color>
<color name="colorControlActivated">#eeeeee</color>
colorControlNormal для нормального зрения флажок, и colorControlActivated, когда снят флажок.
вы должны попробовать ниже код. Это работает на меня.
<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
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" />