Как изменить цвет флажка?
как изменить значение по умолчанию 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 add:
<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" />
добавьте эту строку в свой
styles.xml
file:<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"
надеюсь, что это помогает.
Я столкнулся с той же проблемой, я нашел выход с помощью ниже метод. Скопируйте
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= "@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"/>
вы можете создать свой собственный 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>
Привет это код темы для темной темы и светлой темы.
<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 " / / whatever 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" />