मैं अपने एक प्रोजेक्ट में रेडियोबटन के सर्कल के रंग को बदलना चाहता हूं , मुझे समझ नहीं आ रहा था कि किस प्रॉपर्टी को सेट करना है। मेरा जो बैकग्राउंड कलर है वह काला है इसलिए यह अदृश्य हो जाता है। मैं सर्कल का रंग सफेद करना चाहता हूं।
मैं अपने एक प्रोजेक्ट में रेडियोबटन के सर्कल के रंग को बदलना चाहता हूं , मुझे समझ नहीं आ रहा था कि किस प्रॉपर्टी को सेट करना है। मेरा जो बैकग्राउंड कलर है वह काला है इसलिए यह अदृश्य हो जाता है। मैं सर्कल का रंग सफेद करना चाहता हूं।
जवाबों:
अधिक सरल, बस बटन रंग सेट करें: (केवल एपीआई स्तर 21 या इसके बाद के संस्करण पर काम करता है)
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radio"
android:checked="true"
android:buttonTint="@color/your_color"/>
अपने मूल्यों / रंगों में। xml इस मामले में अपना रंग लाल रंग में डालें:
<color name="your_color">#e75748</color>
परिणाम:
यदि आप इसे कोड के अनुसार करना चाहते हैं (भी एपी 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
एंड्रॉइड स्टूडियो में ऑटो-ऐड में जोड़ें
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 और इतने पर लागू किया जा सकता है।
पुराना उत्तर:
Android 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);
एपीआई 19 पर परीक्षा परिणाम:
अधिक विवरण के लिए Android संदर्भ लिंक देखें ।
<android.support.v7.widget.AppCompatRadioButton ../>
setSupportButtonTintList
एक निजी विधि है जिसका आप उपयोग करने के लिए अभिप्रेत नहीं हैं। रेडियो बटन एंड्रॉइड के कुछ संस्करणों पर अजीब तरह से व्यवहार करेंगे। इसके बजाय, उपयोग करें CompoundButtonCompat.setButtonTintList(rb, colorStateList)
।
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:buttonTint="@color/Color" />
एपीआई प्री 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
!
अपनी शैली में कस्टम शैली की घोषणा करें। xml फ़ाइल।
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
इस शैली को Android के माध्यम से अपने RadioButton पर लागू करें: थीम विशेषता।
<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>
लिए काम करने के लिए मुझे इसका इस्तेमाल करना पड़ा । मुझे अभी भी यकीन नहीं है कि क्यों। अन्यथा, यह एक अच्छा जवाब है।
एपीआई 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" />
एपीआई 21 और अधिक के लिए
बस बटन का उपयोग करें
<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" />
स्टाइल में। 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"
।
मैंने इसे इस तरह से छोटा बनाया (एपीआई प्री 21 के साथ-साथ पोस्ट 21 पर काम करना)
Xml में आपका रेडियो बटन इस तरह दिखना चाहिए
<RadioButton android:id="@+id/radioid"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:button="@drawable/radiodraw" />
in 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>
अनियंत्रित स्थिति को चित्रित करने के लिए रंग को पारदर्शी जोड़ना होगा, अन्यथा यह ठोस काले अंडाकार को आकर्षित करेगा।
कभी-कभी आपको बस इस तरह से कलर कॉन्ट्रोलरॉल को ओवरराइड करने की आवश्यकता होती है :
<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>
और आपको इस तरह एक बटन मिलेगा:
चेक के लिए अनियंत्रित अवस्था और colorAccent के लिए colorControlNormal का उपयोग किया जाता है।
इसके लिए एक xml विशेषता है:
android:buttonTint="yourcolor"
"Make sure your min API is higher then 21 or this won't work"
वह झूठा है। मैं एंड्रॉइड एक्स के साथ एपीआई 17 को लक्षित कर रहा हूं और यह एकमात्र ऐसी चीज है जो मेरे लिए काम करती है
उन लोगों के लिए जो आपके द्वारा किए गए अक्षम, चेक किए गए और सक्षम स्टेट्स को बदलना चाहते हैं, निम्नलिखित कदम उठाएँ:
<!-- 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" />
उसके बाद कलर रेस फोल्डर में "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 Res / मान / color.xml फ़ाइल में colorAccent का रंग लेता है। तो उस फ़ाइल पर जाएँ और के मान को बदलें
<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"
टैग पर विशेषता का उपयोग करें , आशा है कि यह मदद करेगा
मुझे यह समस्या थी। यदि आपके ऐप में एक काली पृष्ठभूमि है और आपके पास बहुत सारे रेडियोबटन हैं जो पृष्ठभूमि के कारण अदृश्य हैं, तो एंड्रॉइड को संपादित करना जटिल है: हर एक का बटन। सबसे अच्छा उपाय यह है कि अपनी शैलियों में मूल विषय को बदल दें। xml फ़ाइल
मैं बदल गया
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
सेवा
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
इसलिए रेडियोबटन के घेरे भूरे रंग के हल्के शेड बन गए और अब वे काले रंग की पृष्ठभूमि के साथ भी दिखाई देने लगे हैं।
यह मेरी शैली है। 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>
स्टाइल में। 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 होना चाहिए, यह एप्लिकेशन के विजेट्स डिफ़ॉल्ट रंग तय करता है।
लेकिन अगर आप कोड में रंग बदलना चाहते हैं, तो शायद @ aknay का उत्तर सही है।