วิธีการเปลี่ยนสีของช่องทำเครื่องหมาย?


247

ฉันจะเปลี่ยนCheckBoxสีเริ่มต้นใน Android ได้อย่างไร
โดยค่าเริ่มต้นCheckBoxสีเป็นสีเขียวและฉันต้องการเปลี่ยนสีนี้
ถ้ามันเป็นไปไม่ได้โปรดบอกฉันวิธีการทำที่กำหนดเองCheckBox?


1
คุณพยายามเปลี่ยนสีของแบบอักษรหรือไม่? หรือสีของกล่องจริง

1
สีของกล่องจริงฉันเปลี่ยน
Piyush

72
การตั้งค่าandroid:buttonTint="@color/mybrown"เป็นวิธีที่ง่ายในการเปลี่ยนสีของกล่อง
shauvik

6
@Shauvik มันเป็นเพียงแค่การทำงานเกี่ยวกับการออกแบบวัสดุ :)
Mucahit

9
@shauvik ดีกว่าที่จะใช้app:buttonTint="@color/mybrown"แทนวิธีนี้สามารถทำงานกับ API <21
Nikaoto

คำตอบ:


187

หากคุณminSdkVersionมีอายุ 21 ปีขึ้นandroid:buttonTintไปให้ใช้แอตทริบิวต์เพื่ออัปเดตสีของช่องทำเครื่องหมาย:

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

ในโครงการที่ใช้ไลบรารี AppCompat และสนับสนุน Android เวอร์ชันต่ำกว่า 21 คุณสามารถใช้buttonTintแอตทริบิวต์เวอร์ชันที่เข้ากันได้:

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

ในกรณีนี้ถ้าคุณต้องการซับคลาส a CheckBoxอย่าลืมใช้AppCompatCheckBoxแทน

คำตอบก่อนหน้า:

คุณสามารถเปลี่ยนCheckBoxdrawable โดยใช้android:button="@drawable/your_check_drawable"แอตทริบิวต์


7
คุณต้องสร้าง drawable ของคุณเอง มีต้องเป็นวิธีที่มากขึ้นตรงไปข้างหน้า ...
IgorGanapolsky

14
การเปลี่ยนสีของปุ่มเป็นสีตรงไปข้างหน้า เราต้องใช้องค์ประกอบดั้งเดิมแทนการปรับแต่งมันโดยไม่จำเป็น
Neela

3
หมายเหตุ: สำหรับสไตล์การออกแบบวัสดุมีcontentControlตัวเลือกอยู่ตอนนี้: materialdoc.com/components/selection-controls
SimpsOff

392

คุณสามารถเปลี่ยนสีได้โดยตรงใน 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" /> 

5
AppCompatCheckBox ... ขอบคุณ ฉันไม่รู้สิ่งนี้
moskis

8
ดีมากขอบคุณ! และอย่าลืมเพิ่มxmlns: app = " schemas.android.com/apk/res-auto "ในเค้าโครงหลัก / หลักของคุณ
Alberto Méndez

2
ไม่ทำงานสำหรับฉันโดยใช้ 'android.support.v7.widget.AppCompatCheckBox'
Zvi

1
สิ่งนี้จะถูกใช้โดยอัตโนมัติเมื่อคุณใช้ช่องทำเครื่องหมายในเค้าโครงของคุณ คุณควรจะใช้คลาสนี้ด้วยตนเองเมื่อเขียนมุมมองที่กำหนดเองเท่านั้น
최봉재

2
วิธีการเกี่ยวกับการตั้งค่า 2 สีที่แตกต่างกันสำหรับสถานะที่เลือกและไม่ถูกตรวจสอบ?
DYS

130

คุณสามารถตั้งค่าธีม Android ของช่องทำเครื่องหมายเพื่อให้ได้สีตามที่คุณต้องการในสไตล์ของคุณ 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


5
TEXTCOLORSECONDARY !!!! ขอบคุณคุณผู้ชาย! แค่นั้นแหละ. ฉันค้นหาทุกเพศทุกวัยเพียงแค่เปลี่ยนสีพื้นหลังที่ไม่ได้เลือกและไม่ต้องการทำงานกับ drawable ที่กำหนดเอง นี่ไง!
Mulgard

@ Mulgard ดีใจที่ฉันสามารถช่วยได้!
Amro elaswar

2
ทำงานให้ฉัน แต่จำเป็นต้องเพิ่ม CheckBox xml เพื่อให้สามารถเห็นข้อความ - android: textColor = "@ color / textColor"
Zvi

ฉันจะทำยังโปรแกรมได้อย่างไร?
ซวี่

@Zvi ฉันไม่แน่ใจว่าคุณสามารถทำสิ่งนี้ได้ตามระบบ
Amro elaswar

48

เวอร์ชันเชิงโปรแกรม:

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

1
ต้องขอบคุณคุณ. คุณแก้ปัญหาได้ดีกว่า
คาร์ลอส

มันให้ผลลัพธ์ที่ไม่คาดคิดกับสีคุณแน่ใจหรือว่าคุณไม่ได้สับสนอะไรเลย?
Kirill Karmazin

@Carlos นี่ไม่ใช่ทางออกที่ "ดีกว่า" เพราะใน Android คุณควรพยายามตั้งค่าเลย์เอาต์ทั้งหมดในไฟล์ xml และไม่เป็นทางการเขียนโปรแกรมยกเว้นเมื่อคุณจำเป็นต้องเปลี่ยนมันแบบไดนามิก
kyay

@kyay ไม่ "เสมอ" ... ระบบทรัพยากร Android เป็นระเบียบและมักจะทำโดยทางโปรแกรมเป็นเรื่องง่ายและบำรุงรักษามากขึ้น
nyholku

มันช่วยแยกความกังวลออกมา
kyay

42

ใช้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>

3
คุณสามารถพูดภาษาอังกฤษและอธิบายคำตอบของคุณได้ไหม
GGO

ติดกับภาษาอังกฤษใน SO เสมอ
nyconing

มันเป็นคำตอบที่ดีกว่า
Vivek A Naik

นี่เป็นวิธีการง่าย ๆ เพียงวิธีเดียวในการตั้งค่าทั้งสีที่เลือกและไม่ถูกตรวจสอบซึ่งใช้งานได้กับอุปกรณ์ทั้งหมด
Gumby The Green

นี่ควรเป็นคำตอบที่ยอมรับได้ แม้ว่ามันควรจะสังเกตว่ามันไม่ทำงานเมื่อมีการประกาศตัวเลือกเป็นvaluesทรัพยากร ตามที่ระบุโดยเส้นทางที่แสดงด้านบนจะต้องอยู่ในcolorsโฟลเดอร์ทรัพยากร
Benjamin Basmaci

18

ฉันขอแนะนำให้ใช้วิธีการสไตล์เขาใน 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"

หวังว่านี่จะช่วยได้


เห็นด้วยกับโซลูชันนี้คุณลักษณะเหล่านั้นควรทำงานได้ดีขึ้นด้วยองค์ประกอบ Android เริ่มต้นในตัว
Trung Le

1
นี่เป็นคำตอบซ้ำ ๆ ของ Amro elaswar เมื่อ 9 เดือนก่อน
jk7

นี่คือวิธีการแก้ปัญหาที่เป็นโซลูชั่นที่แท้จริง
Iharob Al Asimi

16

เพิ่ม 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" />

2
เนื้อหาของคำตอบนี้มีอยู่แล้วในคำตอบของ afathman
MTCoster

10

เพิ่มบรรทัดนี้ในstyles.xmlไฟล์ของคุณ:

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

โปรดแก้ไขคำตอบของคุณด้วยตัวอย่างของคุณและอย่าโพสต์เป็นความคิดเห็น
bish

4
การแก้ไขเล็กน้อย: เป็น <item name = " android : colorAccent> </item> นอกจากนี้ยังมีให้ใช้ตั้งแต่ API 21 ขึ้นไป
3829751

นี่เป็นการเปลี่ยน colorAccent ไม่ใช่สิ่งที่ถูกถาม
Alberto M

1
ใน Galaxy S3 จะเปลี่ยนเฉพาะสถานะของช่องทำเครื่องหมายที่เลือก แต่สถานะไม่ถูกตรวจสอบยังคงเหมือนเดิม
Slava

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

8

ฉันประสบปัญหาเดียวกันฉันได้รับการแก้ไขโดยใช้เทคนิคด้านล่าง คัดลอกbtn_check.xmlจากandroid-sdk/platforms/android-#(version)/data/res/drawableไปยังโฟลเดอร์ที่สามารถวาดได้ของโครงการและเปลี่ยนสถานะภาพ 'เปิด' และ 'ปิด' เป็นรูปภาพที่กำหนดเองของคุณ
จากนั้น 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/..."

คำตอบที่ดี - ง่ายกว่าการสร้าง xml ที่กำหนดเอง .. ขอบคุณ! สำหรับฉันฉันมีพื้นหลังสีเทาและมองไม่เห็นเส้นขอบช่องทำเครื่องหมาย ฉันเพิ่มสิ่งนี้และคุณสามารถเห็นได้ในขณะนี้: android: button = "@ android: drawable / checkbox_off_background"
Gene Bo

1
มีวิธีการใช้วิธีนี้มากกว่าที่ฉันรู้อยู่เล็กน้อย แต่ก็ยังเป็นตัวเลือกที่ดี ฉันได้เพิ่มรายละเอียดด้านล่างstackoverflow.com/a/29831532/2162226
Gene Bo

5

คุณสามารถเปลี่ยนcheckboxสีได้โดยใช้รหัสบรรทัดเดียว

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


4

วิธีการที่แข็งแกร่ง 100%

ในกรณีของฉันฉันไม่มีสิทธิ์เข้าถึงไฟล์ต้นฉบับเลย์เอาต์ XML เนื่องจากฉันได้รับช่องทำเครื่องหมายจาก MaterialDialog บุคคลที่สาม ดังนั้นฉันต้องแก้ปัญหานี้โดยทางโปรแกรม

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

PS นอกจากนี้หากมีใครสนใจนี่คือวิธีที่คุณจะได้รับช่องทำเครื่องหมายจากกล่องโต้ตอบ MaterialDialog (ถ้าคุณตั้งไว้.checkBoxPromptRes(...))

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

หวังว่านี่จะช่วยได้


3

สร้าง 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: ถึงแม้ว่าจะไม่ใช่ข้อบังคับ แต่ก็เป็นแนวปฏิบัติที่ดีในการตั้งชื่อช่องทำเครื่องหมายของคุณด้วยรหัสที่ไม่ซ้ำกันตลอดทั้งแผนผังเลย์เอาต์ของคุณ


3

สวัสดีนี่เป็นรหัสธีมสำหรับทั้ง Dark Theme และ Light Theme

<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" ใช้เพื่อให้ได้รูปแบบเมนูป๊อปอัพของชุดรูปแบบ Light ในชุดรูปแบบเข้ม

<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

คุณสามารถสร้าง 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>


1
ในขณะที่มันเป็นเสียงที่ต้องรู้เกี่ยวกับกราฟิกแบบเวกเตอร์ที่วาดได้คำตอบนี้ไม่ได้ตอบคำถามของ OP เกี่ยวกับโทนสีของปุ่ม
Mike Poole

2

คุณสามารถใช้สองคุณสมบัติต่อไปนี้ใน "colors.xml"

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

colorControlNormal ใช้สำหรับมุมมองปกติของช่องทำเครื่องหมายและ colorControlActivated ใช้สำหรับเมื่อมีการทำเครื่องหมายที่ช่องทำเครื่องหมาย


1

คุณสามารถเปลี่ยนสีพื้นหลังของโดยการฝังมันภายใน<CheckBox> <LinearLayout>จากนั้นเปลี่ยนสีพื้นหลังของ<LinearLayout>เป็นสีที่คุณต้องการ


คำถามเกี่ยวกับสีของช่องทำเครื่องหมายและไม่ใช่พื้นหลัง
ซวี่

1

คุณควรลองรหัสด้านล่าง มันใช้งานได้สำหรับฉัน

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

1

หากคุณกำลังจะใช้ไอคอน 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 คุณจัดหาการอ้างอิงถึงหรือปิดทรัพยากร drawable สำหรับตัวเลือก สิ่งนี้จะทำให้ drawable ถูกต้องโดยอัตโนมัติตามสถานะของช่องทำเครื่องหมาย
jkincali

0

คำตอบส่วนใหญ่จะผ่านไฟล์ xml หากคุณพบคำตอบที่ใช้งานได้สำหรับ Android เกือบทุกรุ่นและเป็นเพียงสีเดียวสำหรับสถานะทั้งสองตรวจสอบ UnCheck: นี่คือวิธีแก้ปัญหาของฉัน:

Kotlin:

val colorFilter = PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP)
CompoundButtonCompat.getButtonDrawable(checkBox)?.colorFilter = colorFilter

Java:

ColorFilter colorFilter = new PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP);
Drawable drawable = CompoundButtonCompat.getButtonDrawable(checkBox);
if (drawable != null) {
    drawable.setColorFilter(colorFilter);
}

-1

มีวิธีที่ง่ายกว่ามากในการตั้งค่าสีโดยทางโปรแกรม ใช้วิธีการด้านล่าง, Checkbox.setButtonTintList (ColorStateList.valueOf (getContext (). getColor (R.color.yourcolor)))


-2

คุณสามารถใช้บรรทัดด้านล่างของรหัสเพื่อเปลี่ยนพื้นหลังของช่องทำเครื่องหมายแบบไดนามิกในรหัส java ของคุณ

//Setting up background color on checkbox.
 checkbox.setBackgroundColor(Color.parseColor("#00e2a5"));

คำตอบนี้มาจากเว็บไซต์นี้ คุณยังสามารถใช้ไซต์นี้เพื่อแปลงสี RGB ของคุณเป็นค่า Hex ได้คุณต้องป้อน parseColor

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.