Domanda

Come cambio il valore predefinito CheckBox Colore in Android?
Per impostazione predefinita il CheckBox Il colore è verde e voglio cambiare questo colore.
Se non è possibile, dimmi come fare un'usanza CheckBox?

È stato utile?

Soluzione

Se tuo minSdkVersion è 21+ utilizzo android:buttonTint attributo per aggiornare il colore di una casella di controllo:

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

Nei progetti che utilizzano la libreria AppCompat e supportano le versioni Android al di sotto di 21 puoi utilizzare una versione compatita del buttonTint attributo:

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

In questo caso se si desidera sottoclasse a CheckBox Non dimenticare di usare AppCompatCheckBox invece.

Risposta precedente:

Si può cambiare CheckBoxS Drawable Using android:button="@drawable/your_check_drawable" attributo.

Altri suggerimenti

Puoi cambiare il colore direttamente in XML. Uso buttonTint Per la scatola: (A partire da API Livello 23)

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

Puoi anche farlo usando appCompatCheckbox v7 Per i livelli API più vecchi:

<android.support.v7.widget.AppCompatCheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:buttonTint="@color/COLOR_HERE" /> 

Puoi impostare il tema Android della casella di controllo per ottenere il colore che desideri nei tuoi stili.xml Aggiungi:

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

Quindi nel tuo file di layout:

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

A differenza dell'uso android:buttonTint="@color/CHECK_COLOR" Questo metodo funziona sotto API 23

Versione programmatica:

int states[][] = {{android.R.attr.state_checked}, {}};
int colors[] = {color_for_state_checked, color_for_state_normal}
CompoundButtonCompat.setButtonTintList(checkbox, new ColorStateList(states, colors));

Uso buttonTint Per modificare il colore del selettore di pulsanti e colori per la versione API sopra 21+.

<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"/>

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>

Suggerirei di usare l'approccio Style in Android come modo per configurare le viste Android integrate, aggiungere un nuovo stile nel tuo progetto:

<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>

e aggiungi assegnare questo stile al tema della casella di controllo: Android: tema = "@style/youstyle"

spero che sia di aiuto.

Aggiungi ButtonTint nel tuo 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" />

Aggiungi questa riga nel tuo styles.xml file:

<style>
    <item name="android:colorAccent">@android:color/holo_green_dark</item>
</style>

ButtonTint ha funzionato per me prova

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"/>

Ho affrontato lo stesso problema, ho ottenuto una soluzione usando sotto la tecnica. Copia il btn_check.xml da android-sdk/platforms/android-#(version)/data/res/drawable alla cartella disegnabile del tuo progetto e modifica l'immagine "ON" e "Off" nelle tue immagini personalizzate.
Allora il tuo XML avrà solo bisogno android:button="@drawable/btn_check"

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

Se si desidera utilizzare diverse icone Android predefinite, puoi usare:

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

Si può cambiare checkbox Colore usando la riga di codice Singe

android:buttonTint="@color/app_color" //whatever color

Puoi creare il tuo XML in Drawable e usarlo come Android: Background = "@Drawable/Your_xml"

In quanto puoi dare tutto all'angolo di confine tutto

<item>
    <shape>
        <gradient

            android:endColor="#fff"
            android:startColor="#fff"/>
        <corners
            android:radius="2dp"/>
        <stroke
            android:width="15dp"
            android:color="#0013669e"/>

    </shape>
</item>

Ciao, questo è il codice a tema sia per tema oscuro che per tema luminoso.

<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>

Se si desidera modificare il colore della casella di controllo, l'attributo "Coloraccent" utilizzerà per lo stato controllato e "Android: TextColoRorseCondary" utilizzerà per lo stato di delegato.

"ActionOverFlowButtonStyle" utilizzerà per cambiare il colore dell'icona di overflow nella barra d'azione.

L'attributo "ButtonSearch_Picture" utilizzerà per modificare il pulsante TINT Color of Action nella barra di azione. Questo è un attributo personalizzato in style.xml

<attr name="buttonsearch_picture" format="reference"/>

Lo stesso è il pulsante di aggiornamento che sto usando nella mia app.

L'attributo "Android: Popupmenustyle" sta usando per ottenere uno stile di menu popup a tema leggero in tema oscuro.

<style name="PopupMenu" parent="Theme.AppCompat.Light.NoActionBar">
</style>

E questo è il codice della barra degli strumenti che sto usando nell'app My 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>

Temi:-

 <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>

Crea un XML Drawable resource file sotto res->drawable e chiamarlo, per esempio, 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>

Carica i file di immagini della casella di controllo personalizzati (ti consiglio PNG) sul tuo res->drawable cartella.

Quindi vai nel file di layout e cambia la casella di controllo in

<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"/>

Puoi personalizzare qualsiasi cosa, purché android:button punta al file XML corretto creato prima.

Nota per i neofiti: sebbene non sia obbligatorio, è comunque una buona pratica nominare la casella di controllo con un ID univoco in tutto il tuo layout Tree.

Puoi cambiare il colore di sfondo del <CheckBox> Incorporandolo all'interno di a <LinearLayout>. Quindi modificare il colore di sfondo di <LinearLayout> al colore che desideri.

Dovresti provare il codice di seguito. Funziona per me.

<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>

e casella di controllo

<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" />

Se hai intenzione di utilizzare le icone Android, come descritto sopra ..

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

.. È una buona opzione, ma per questo funzionamento - Ho scoperto che devi aggiungere la logica a disattivazione per mostrare/nascondere il segno di spunta, in questo modo:

    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);

        }
    });

È possibile utilizzare le seguenti due proprietà in "Colors.xml"

<color name="colorControlNormal">#eeeeee</color>
<color name="colorControlActivated">#eeeeee</color>

ColorControlNormal è per la normale vista della casella di controllo e ColorControlactivated è per quando la casella di controllo è controllata.

Approccio robusto al 100%.

Nel mio caso, non avevo accesso al file di origine del layout XML, poiché ricevo la casella di controllo da un materiale di materiale di 3 ° partito Lib. Quindi devo risolverlo a livello di programmazione.

  1. Crea un colorstateList in XML:

Res/Color/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>
  1. Quindi applicalo alla casella di controllo:

    ColorStateList darkStateList = ContextCompat.getColorStateList(getContext(), R.color.checkbox_tint_dark_theme);
    CompoundButtonCompat.setButtonTintList(checkbox, darkStateList);
    

PS Inoltre se qualcuno è interessato, ecco come è possibile ottenere la tua casella di controllo dalla finestra di dialogo MaterialDialog (se la imposta con .checkBoxPromptRes(...)):

CheckBox checkbox = (CheckBox) dialog.getView().findViewById(R.id.md_promptCheckbox);

Spero che sia di aiuto.

Esiste un modo molto più semplice per impostare il colore programmaticamente. Utilizzare il metodo sotto, checkBox.setButtonTintList (colorStateList.Valueof (getContext (). GetColor (r.Color.yourColor)))

Usa questo per modificare lo sfondo della casella di controllo in dinamicamente nel codice Java

// Impostazione del colore di sfondo sulla casella di controllo. CheckBox.setBackGroundColor (color.ParseColor ("#00e2a5"));

Questa risposta è stata da un questo luogo. Puoi anche usarlo luogo Per convertire il colore RGB al valore esagonale devi nutrire il parseColor

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top