ฉันต้องการเปลี่ยนสีของวงกลมของRadioButtonในหนึ่งในโครงการของฉันฉันไม่เข้าใจว่าจะตั้งค่าคุณสมบัติใด สีพื้นหลังที่ฉันเป็นสีดำทำให้มองไม่เห็น ฉันต้องการตั้งค่าสีของวงกลมเป็นสีขาว
ฉันต้องการเปลี่ยนสีของวงกลมของRadioButtonในหนึ่งในโครงการของฉันฉันไม่เข้าใจว่าจะตั้งค่าคุณสมบัติใด สีพื้นหลังที่ฉันเป็นสีดำทำให้มองไม่เห็น ฉันต้องการตั้งค่าสีของวงกลมเป็นสีขาว
คำตอบ:
ง่ายขึ้นเพียงตั้งค่าปุ่มสีอ่อน: (ใช้ได้กับ api ระดับ 21 ขึ้นไปเท่านั้น)
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:checked="true"
android:buttonTint="@color/your_color"/>
ในค่า / colors.xml ใส่สีของคุณในกรณีนี้สีแดง:
<color name="your_color">#e75748</color>
ผลลัพธ์:
หากคุณต้องการทำตามรหัส (เช่น api 21 ขึ้นไป):
if(Build.VERSION.SDK_INT>=21)
{
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-android.R.attr.state_enabled}, //disabled
new int[]{android.R.attr.state_enabled} //enabled
},
new int[] {
Color.BLACK //disabled
,Color.BLUE //enabled
}
);
radio.setButtonTintList(colorStateList);//set the color tint list
radio.invalidate(); //could not be necessary
}
control.getDrawable().setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);
ที่control
การควบคุมที่คุณต้องการที่จะเปลี่ยนสีและcolor
เป็นค่าจำนวนเต็มของสีที่คุณต้องการเช่นR.color.red
android.R.attr.state_checked
และเพิ่มสีได้
อัปเดต: 1. ใช้อันนี้แทน
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/rbtn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
2. จากนั้นเพิ่มบรรทัดนี้ลงในเค้าโครงหลักหรือAlt + Enter
ใน Android Studio เพื่อเพิ่มอัตโนมัติ
xmlns:app="http://schemas.android.com/apk/res-auto"
ตัวอย่างขั้นต่ำควรมีลักษณะเช่นนี้:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/rbtn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/primary" />
</LinearLayout>
3. ในโปรแกรมของคุณควรเรียกเช่นนี้
AppCompatRadioButton radioButton = (AppCompatRadioButton) view.findViewById(R.id.rbtn_test);
โดยทั่วไปแล้วรูปแบบประเภทนี้สามารถใช้ได้กับ AppCompact ทุกประเภทเช่น AppCompatCheckBox, AppCompatButton และอื่น ๆ
คำตอบเก่า:
เพื่อสนับสนุนด้านล่างหุ่นยนต์ API 21 คุณสามารถใช้AppCompatRadioButton จากนั้นใช้setSupportButtonTintList
วิธีการเปลี่ยนสี นี่คือข้อมูลโค้ดของฉันเพื่อสร้างปุ่มตัวเลือก
AppCompatRadioButton rb;
rb = new AppCompatRadioButton(mContext);
ColorStateList colorStateList = new ColorStateList(
new int[][]{
new int[]{-android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
},
new int[]{
Color.DKGRAY
, Color.rgb (242,81,112),
}
);
rb.setSupportButtonTintList(colorStateList);
ผลการทดสอบที่ API 19:
ดูลิงค์อ้างอิง android สำหรับรายละเอียดเพิ่มเติม
<android.support.v7.widget.AppCompatRadioButton ../>
setSupportButtonTintList
เป็นวิธีส่วนตัวที่คุณไม่ต้องการใช้ ปุ่มตัวเลือกจะทำงานผิดปกติบน Android บางรุ่น CompoundButtonCompat.setButtonTintList(rb, colorStateList)
แต่การใช้งาน
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
ทำงานกับ API ก่อน 21 เช่นเดียวกับโพสต์ 21
ในตำแหน่งของคุณstyles.xml
:
<!-- custom style -->
<style name="radionbutton"
parent="Base.Widget.AppCompat.CompoundButton.RadioButton">
<item name="android:button">@drawable/radiobutton_drawable</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
radio button
xml ของคุณควรมีลักษณะดังนี้:
<RadioButton
android:layout_width="wrap_content"
style="@style/radionbutton"
android:checked="false"
android:layout_height="wrap_content"
/>
ตอนนี้สิ่งที่คุณต้องทำคือการทำในของคุณradiobutton_drawable.xml
drawable folder
นี่คือสิ่งที่คุณต้องใส่ใน:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/radio_unchecked" android:state_checked="false" android:state_focused="true"/>
<item android:drawable="@drawable/radio_unchecked" android:state_checked="false" android:state_focused="false"/>
<item android:drawable="@drawable/radio_checked" android:state_checked="true" android:state_focused="true"/>
<item android:drawable="@drawable/radio_checked" android:state_checked="true" android:state_focused="false"/>
</selector>
ของคุณradio_unchecked.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke android:width="1dp" android:color="@color/colorAccent"/>
<size android:width="30dp" android:height="30dp"/>
</shape>
ของคุณradio_checked.xml
:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<stroke android:width="1dp" android:color="@color/colorAccent"/>
<size android:width="30dp" android:height="30dp"/>
</shape>
</item>
<item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
<shape android:shape="oval">
<solid android:width="1dp" android:color="@color/colorAccent"/>
<size android:width="10dp" android:height="10dp"/>
</shape>
</item>
</layer-list>
เพียงแทนที่@color/colorAccent
ด้วยสีที่คุณเลือก
คุณต้องใช้รหัสนี้:
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:text="Radiobutton1"
app:buttonTint="@color/black" />
ใช้app:buttonTint
แทนandroid:buttonTint
และandroid.support.v7.widget.AppCompatRadioButton
แทนRadiobutton
!
ประกาศสไตล์ที่กำหนดเองในไฟล์ styles.xml ของคุณ
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
ใช้สไตล์นี้กับ RadioButton ของคุณผ่าน android: คุณสมบัติของชุดรูปแบบ
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Radio Button"
android:theme="@style/MyRadioButton"/>
เฉพาะในกรณีที่กิจกรรมของคุณขยาย AppCompatActivity
<item name="android:colorControlActivated">@color/pink</item>
มันเพื่อทำงานให้ฉัน ฉันยังไม่แน่ใจว่าทำไม มิฉะนั้นนี่เป็นคำตอบที่ดี
สำหรับภายใต้ API 21
สร้างสไตล์ที่กำหนดเอง RadioButton style.xml
<style name="RadioButton" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/green</item>
<item name="android:textColorSecondary">@color/mediumGray</item>
<item name="colorControlNormal">@color/red</item>
</style>
ในการใช้ชุดรูปแบบ:
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButton" />
สำหรับ API 21 และอื่น ๆ
เพียงใช้ buttonTint
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/green" />
คำถามนั้นเก่า แต่ฉันคิดว่าคำตอบของฉันจะช่วยผู้คน คุณสามารถเปลี่ยนสีของสถานะไม่ถูกตรวจสอบและตรวจสอบปุ่มได้โดยใช้สไตล์ใน xml
<RadioButton
android:id="@+id/rb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButtonStyle" />
ใน style.xml
<style name="RadioButtonStyle" parent="Theme.AppCompat.Light">
<item name="colorAccent">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
คุณสามารถตั้งค่าสีที่ต้องการในสไตล์นี้
ตั้งค่าbuttonTint
คุณสมบัติ ตัวอย่างเช่นandroid:buttonTint="#99FF33"
.
ฉันทำให้มันสั้นแบบนี้ (ทำงานกับ API ก่อน 21 รวมทั้งโพสต์ 21)
ปุ่มตัวเลือกของคุณใน xml ควรมีลักษณะเช่นนี้
<RadioButton android:id="@+id/radioid"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:button="@drawable/radiodraw" />
ใน radiodraw.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="false" >
<shape android:shape="oval" >
<stroke android:width="1dp" android:color="#000"/>
<size android:width="30dp" android:height="30dp"/>
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:state_checked="true">
<layer-list>
<item>
<shape android:shape="oval">
<stroke android:width="1dp" android:color="#000"/>
<size android:width="30dp" android:height="30dp"/>
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:top="5dp" android:bottom="5dp" android:left="5dp" android:right="5dp">
<shape android:shape="oval">
<solid android:width="1dp" android:color="#000"/>
<size android:width="10dp" android:height="10dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
ต้องเพิ่มสีโปร่งใสสำหรับการวาดสถานะไม่ถูกตรวจสอบมิฉะนั้นมันจะวาดรูปวงรีสีดำทึบ
บางครั้งคุณต้องแทนที่colorControlNormalเช่นนี้:
<style name="RadioButtonStyle" parent="AppTheme">
<item name="colorControlNormal">@color/pink</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:textColorSecondary">@color/black</item>
</style>
และคุณจะได้รับปุ่มแบบนี้:
colorControlNormalใช้สำหรับสถานะไม่ถูกตรวจสอบและcolorAccentสำหรับการตรวจสอบ
มีแอตทริบิวต์ xml สำหรับมัน:
android:buttonTint="yourcolor"
"Make sure your min API is higher then 21 or this won't work"
นั่นคือเท็จ ฉันกำลังกำหนดเป้าหมาย API 17 ด้วย AndroidX และนี่เป็นสิ่งเดียวที่ทำงานให้ฉัน
สำหรับผู้ที่ต้องการเปลี่ยนปิดการใช้งานตรวจสอบและเปิดใช้งานสถานะคุณ cat ทำตามขั้นตอนต่อไปนี้:
<!-- Or androidX radio button or material design radio button -->
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:text="Radiobutton1"
app:buttonTint="@color/radio_button_color" />
จากนั้นในโฟลเดอร์ res color ให้ไฟล์ชื่อ "radio_button_color.xml":
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/yellow900" android:state_selected="true" />
<item android:color="@color/yellow800" android:state_checked="true" />
<item android:color="@color/gray800" android:state_enabled="false" />
<item android:color="@color/yellow800" android:state_enabled="true" />
</selector>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:buttonTint="@color/my_color"/>
ปุ่มทั้งหมดจะเปลี่ยนสีกล่องวงกลมและตรวจสอบกลาง
RadioButton ตามค่าเริ่มต้นจะใช้สีของ colorAccent ในไฟล์ res / values / colors.xml ดังนั้นไปที่ไฟล์นั้นและเปลี่ยนค่าของ
<color name="colorAccent">#3F51B5</color>
เป็นสีที่คุณต้องการ
วิธีที่ง่ายที่สุดคือเปลี่ยน colourAccent
สีvalues->colours.xml
แต่ระวังว่ามันจะเปลี่ยนสิ่งอื่นเช่นแก้ไขสีเคอร์เซอร์ข้อความ ฯลฯ
< color name="colorAccent">#75aeff</color >
หากคุณต้องการตั้งค่าสีที่แตกต่างสำหรับปุ่มตัวเลือกที่ถูกคลิกและไม่แสดงให้ใช้:
android:buttonTint="@drawable/radiobutton" in xml of the radiobutton and your radiobutton.xml will be:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#1E88E5"/>
<item android:state_checked="true" android:color="#00e676"/>
<item android:color="#ffffff"/>
เพียงใช้android:buttonTint="@color/colorPrimary"
คุณลักษณะบนแท็กหวังว่าจะช่วยได้
ฉันมีปัญหานี้ หากแอปของคุณมีพื้นหลังสีดำและคุณมี RadioButtons จำนวนมากที่มองไม่เห็นเนื่องจากพื้นหลังมีความซับซ้อนในการแก้ไข android: buttonTint ของแต่ละอันทางออกที่ดีที่สุดคือเปลี่ยนธีมหลักในไฟล์ styles.xml ของคุณ
ฉันเปลี่ยน
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
ถึง
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
ดังนั้นวงกลม RadioButtons จึงกลายเป็นสีเทาจางลงและตอนนี้พวกมันสามารถมองเห็นได้แม้มีพื้นหลังสีดำ
นี่คือไฟล์ style.xml ของฉัน:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
@ jh314 ถูกต้อง ใน AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"></application>
ใน style.xml
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/red</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
ชื่อรายการจะต้องเป็น colorAccent โดยจะตัดสินใจสีเริ่มต้นของวิดเจ็ตของแอปพลิเคชัน
แต่ถ้าคุณต้องการเปลี่ยนสีในรหัสคำตอบของ @ @ อาจจะไม่ถูกต้อง