web-dev-qa-db-ja.com

チェックボックスの色を変えるには?

AndroidでデフォルトのCheckBoxの色を変更するにはどうすればいいですか?
デフォルトではCheckBoxの色は緑色です。この色を変更したいです。
それが不可能な場合は、カスタムCheckBoxを作成する方法を教えてください。

170
Piyush

minSdkVersionが21+の場合、Android:buttonTint属性を使用してチェックボックスの色を更新します。

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

AppCompatライブラリを使用し、21未満のAndroidバージョンをサポートするプロジェクトでは、buttonTint属性の互換バージョンを使用できます。

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

この場合、CheckBoxをサブクラス化したい場合は、代わりにAppCompatCheckBoxを使用することを忘れないでください。

前の回答:

Android:button="@drawable/your_check_drawable"属性を使用してCheckBoxsの描画可能を変更できます。

62
Michael

色はXMLで直接変更できます。ボックスにbuttonTintを使用します。(APIレベル23以降)

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

古いAPIレベルではappCompatCheckbox v7を使ってこれを行うこともできます。

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

チェックボックスのAndroidテーマを設定して、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で動作します。

110
Amro elaswar

プログラムバージョン:

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

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>
24
D. Sergeev
<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
Shweta Chauhan

私は、組み込みの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"

お役に立てれば。

15

この行をstyles.xmlファイルに追加します。

<style>
    <item name="Android:colorAccent">@Android:color/holo_green_dark</item>
</style>
11
Yogesh Rathi

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

私は同じ問題に直面し、私は以下のテクニックを使用して解決策を得ました。 Android-sdk/platforms/Android-#(version)/data/res/drawableからbtn_check.xmlをプロジェクトの描画可能フォルダにコピーして、 '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/..."
6
sravan

1行のコードを使用してcheckbox色を変更できます

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

4
Kishore Reddy

こんにちはこれはダークテーマとライトテーマの両方のテーマコードです。

<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」属性は、アクションバーのアクションボタンの色合いの変更に使用されます。これはstyle.xmlのカスタム属性です。

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

私のアプリで使用している更新ボタンも同様です。

「Android:popupMenuStyle」属性は、ダークテーマのライトテーマのポップアップメニュースタイルを取得するために使用しています。

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

そしてこれが私のRocks Player Appで使っているツールバーのコードです。

 <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>
2
Ashish Saini

あなたはdrawableであなた自身のxmlを作成し、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>
2
abhiruchi vijay

Drawable resource fileの下にxml 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>

あなたのres->drawableフォルダにあなたのカスタムチェックボックス画像ファイル(私は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ファイルを指している限り、何でもカスタマイズできます。

初心者向けの注意:必須ではありませんが、レイアウトツリー全体で一意のIDを使用してチェックボックスに名前を付けることをお勧めします。

1
tony gil

「colors.xml」では、次の2つのプロパティを使用できます。

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

colorControlNormalはチェックボックスの通常のビュー用で、colorControlActivatedはチェックボックスがチェックされているときのためです。

上記のように、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);

        }
    });
0
Gene Bo

100%堅牢なアプローチ.

私の場合は、サードパーティのMaterialDialogライブラリからCheckboxを入手したので、XMLレイアウトのソースファイルにアクセスできませんでした。だから私はプログラム的にこれを解決する必要があります。

  1. ColorStateListを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. それをチェックボックスに適用します。

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

P.Sさらに、誰かが興味を持っている場合、MaterialDialogダイアログからチェックボックスを取得する方法があります(.checkBoxPromptRes(...)で設定した場合)。

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

お役に立てれば。

0
Kirill Karmazin

<CheckBox>の中に埋め込むことで、<LinearLayout>の背景色を変更できます。それから<LinearLayout>の背景色を好きな色に変更します。

0
mellowg

以下のコードを試してください。それは私のために働いています。

<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" />
0
Imtiyaz Khalani