रेडियो बटन का सर्किल रंग बदलें


158

मैं अपने एक प्रोजेक्ट में रेडियोबटन के सर्कल के रंग को बदलना चाहता हूं , मुझे समझ नहीं आ रहा था कि किस प्रॉपर्टी को सेट करना है। मेरा जो बैकग्राउंड कलर है वह काला है इसलिए यह अदृश्य हो जाता है। मैं सर्कल का रंग सफेद करना चाहता हूं।


इस लिंक को देखें: heliodorj.blogspot.in/2009/04/…
Android डेवलपर

रेडियो बटन के लिए दो छवि का उपयोग करें एक का चयन किया गया है और दूसरा नहीं है, रेडिओबॉटन पर इस छवियों को सेटबैक ग्राउंड संसाधन का उपयोग करके या चयनकर्ता xml का उपयोग करके क्लिक करें।
SAURABH_12

जवाबों:


288

अधिक सरल, बस बटन रंग सेट करें: (केवल एपीआई स्तर 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>

परिणाम:

रंगीन Android रेडियो बटन

यदि आप इसे कोड के अनुसार करना चाहते हैं (भी एपी 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
}

1
@ हेमिलिन, यदि आप कोड द्वारा रंग टिंट को बदलना चाहते हैं, तो आपको उपयोग करना चाहिए control.getDrawable().setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);जहां controlनियंत्रण आप टिंट को बदलना चाहते हैं और colorआपके द्वारा इच्छित रंग का पूर्णांक मान हैR.color.red
जॉर्ज अरिमनी

1
@JorgeArimany एक रेडियोबटन के लिए, क्या यह GetButtonDrawable या getCompoundDrawables है? getCompoundDrawables एक सूची लौटाता है
लेनिन राज

@ हेमिलिन, धन्यवाद, आपकी टिप्पणी के लिए मेरा जवाब एक बटन की तरह अन्य नियंत्रणों के लिए था, मैंने अपना उत्तर उस कोड को जोड़कर उन्नत किया है जिसकी आप तलाश कर रहे हैं, आशा है कि आपकी मदद करता है
जॉर्ज अरिमनी

3
@ जोर्जअर्मनी मैं इसे पहले से ही 21 के लिए काम कर रहा था .. मैं विशेष रूप से उत्तर के लिए देख रहा हूँ <21
लेनिन राज राजसेकरन

चेक किए गए बटन का रंग बदलने के लिए आप रंग के साथ एक राज्य को जोड़ या बदल सकते हैं android.R.attr.state_checked
6

159

अद्यतन: 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 पर परीक्षा परिणाम:

यह एक एपीआई 19 पर परीक्षण किया गया है

अधिक विवरण के लिए Android संदर्भ लिंक देखें ।


10
यह उत्तर स्वीकृत होना चाहिए। यदि आप इस समर्थन रेडियो बटन को xml के माध्यम से जोड़ना चाहते हैं, तो इस्तेमाल करें<android.support.v7.widget.AppCompatRadioButton ../>
विनायक गर्ग

22
setSupportButtonTintListएक निजी विधि है जिसका आप उपयोग करने के लिए अभिप्रेत नहीं हैं। रेडियो बटन एंड्रॉइड के कुछ संस्करणों पर अजीब तरह से व्यवहार करेंगे। इसके बजाय, उपयोग करें CompoundButtonCompat.setButtonTintList(rb, colorStateList)
wampastompa

2
@wampastompa सही है। एपीआई 22 पर, परिणाम यह था कि मैंने केवल एक बाहरी सर्कल देखा, जब जांच नहीं की गई थी। @aknay; कृपया अपना उत्तर अपडेट करें
Nino van Hooff

1
मैं एपीआई 16 पर हूं। मैं ऊपर सूचीबद्ध के रूप में AppCompat रेडियो बटन जोड़ता हूं, हालांकि यह अभी भी सही ढंग से प्रदर्शित नहीं हो रहा है।
tccpg288

1
आपको किसी भी कोड की आवश्यकता नहीं है, इगोर ऑलिवेरा का जवाब देखें। सभी संस्करणों के लिए काम करता है।
किरिल कर्माजिन

77
<android.support.v7.widget.AppCompatRadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:buttonTint="@color/Color" />

11
यह पूर्व, वर्तमान और पोस्ट लॉलीपॉप उपकरणों के लिए उत्तर है !! महान
sdelvalle57

1
यह स्वीकृत उत्तर होना चाहिए। छोटा और परिपूर्ण। नोट: ऐप का उपयोग करें: buttonTint = "@ color / Color" लेकिन notoid: buttonTint = "@ color / Color"!
किरिल कर्माजिन

@KirillKarmazin को स्वीकार किया जाना चाहिए जो <21
user924

56

एपीआई प्री 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 buttonXml में आपकी तरह दिखना चाहिए:

<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अपनी पसंद के रंग के साथ बदलें ।


मैं इस प्रोग्राम को कैसे करूंगा?
tccpg288

@ tccpg288 यदि आप इस xml का उपयोग करते हैं और यदि आप प्रोग्राम को रंग बदलना चाहते हैं, तो बस RadioButton.setChecked (गलत) या RadioButton.setChecked (true) का उपयोग करें
वैभव शर्मा

मैं आपके सवाल को नहीं समझता। क्या आप कृपया विस्तार से बता सकते हैं?
वैभव शर्मा

मेरी गलती, क्या इससे कोई फर्क नहीं पड़ता कि मैं नियमित रेडियोबटन या एपकंपैट रेडियोबटन का उपयोग करता हूं?
tccpg288

1
यह काम नहीं कर रहा है, जब मैं RadioButton को इनिशियलाइज़ करता हूं तो इसका क्या? यहाँ मेरा कोड है: mPollAnswerArrayList.add ((indexCreated), New RadioButton ((getActivity ()। GetApplicationContext ()), null, R.style.radiobutton);
tccpg288

18

आपको इस कोड का उपयोग करना होगा:

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


16
  1. अपनी शैली में कस्टम शैली की घोषणा करें। xml फ़ाइल।

    <style name="MyRadioButton" parent="Theme.AppCompat.Light">  
      <item name="colorControlNormal">@color/indigo</item>
      <item name="colorControlActivated">@color/pink</item>
    </style>  
  2. इस शैली को 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


1
इसे एक उत्तर के रूप में स्वीकार किया जाना चाहिए, यह सभी संस्करणों पर काम करता है और यह सबसे साफ है
एंटोनिस रैडज़

मेरे <item name="android:colorControlActivated">@color/pink</item>लिए काम करने के लिए मुझे इसका इस्तेमाल करना पड़ा । मुझे अभी भी यकीन नहीं है कि क्यों। अन्यथा, यह एक अच्छा जवाब है।
टेलर वेनसैट

16

एपीआई 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" />

स्पष्ट किया जाना चाहिए: बटन एपीआई एपीआई 21 के लिए काम करता है और ऐसे ऐप्स जो AppCompat / AndroidX का उपयोग करते हैं, कोई फर्क नहीं पड़ता एपीआई
Chisko

12

सवाल पुराना है लेकिन मुझे लगता है कि मेरा जवाब लोगों की मदद करेगा। आप 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>

आप इस शैली में वांछित रंग सेट कर सकते हैं।


RadioButton के अंदर थीम काम नहीं करता है (अब?)। यह बटन क्लिक करते समय क्रैश हो जाता है, क्योंकि ऑनक्लिक विधि नहीं मिली है, हालांकि यह यहां है।
बेवर

इस मुद्दे का कोई और कारण होगा। सुनिश्चित करें कि आपको उस दृश्य पर onClick लागू करने से पहले सही दृश्य की आईडी मिल रही है।
जौरा


7

मैंने इसे इस तरह से छोटा बनाया (एपीआई प्री 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>

अनियंत्रित स्थिति को चित्रित करने के लिए रंग को पारदर्शी जोड़ना होगा, अन्यथा यह ठोस काले अंडाकार को आकर्षित करेगा।


6

कभी-कभी आपको बस इस तरह से कलर कॉन्ट्रोलरॉल को ओवरराइड करने की आवश्यकता होती है :

    <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 का उपयोग किया जाता है।


5

इसके लिए एक xml विशेषता है:

android:buttonTint="yourcolor"

सुनिश्चित करें कि आपका न्यूनतम API 21 है और यह काम नहीं करेगा
Jcorretjer

आप इसे पिछड़े संगतता के लिए उपयोग कर सकते हैं: ऐप: बटनटाइंट = "your_color"
मृदुल दास

"Make sure your min API is higher then 21 or this won't work"वह झूठा है। मैं एंड्रॉइड एक्स के साथ एपीआई 17 को लक्षित कर रहा हूं और यह एकमात्र ऐसी चीज है जो मेरे लिए काम करती है
चिसको

3

उन लोगों के लिए जो आपके द्वारा किए गए अक्षम, चेक किए गए और सक्षम स्टेट्स को बदलना चाहते हैं, निम्नलिखित कदम उठाएँ:

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

2
<RadioButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/radio"
    android:buttonTint="@color/my_color"/>

सभी बटन रंग, सर्कल बॉक्स और केंद्रीय चेक को बदल देंगे।


1
लेकिन तरंग नहीं ;-)
Waza_Be

1

डिफ़ॉल्ट रूप से RadioButton Res / मान / color.xml फ़ाइल में colorAccent का रंग लेता है। तो उस फ़ाइल पर जाएँ और के मान को बदलें

<color name="colorAccent">#3F51B5</color>

आप चाहते हैं रंग के लिए।


0

सबसे आसान तरीका है colourAccentरंग बदलना values->colours.xml
लेकिन ध्यान रखें कि यह अन्य चीजों को भी बदल देगा जैसे एडिट टेक्स्ट कर्सर कलर आदि।

< color name="colorAccent">#75aeff</color >


0

यदि आप क्लिक किए गए और अस्पष्ट रेडियो बटन के लिए अलग-अलग रंग सेट करना चाहते हैं, तो बस उपयोग करें:

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



0

मुझे यह समस्या थी। यदि आपके ऐप में एक काली पृष्ठभूमि है और आपके पास बहुत सारे रेडियोबटन हैं जो पृष्ठभूमि के कारण अदृश्य हैं, तो एंड्रॉइड को संपादित करना जटिल है: हर एक का बटन। सबसे अच्छा उपाय यह है कि अपनी शैलियों में मूल विषय को बदल दें। 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>


-4

@ 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 का उत्तर सही है।


यह प्रश्न का उत्तर प्रदान नहीं करता है। एक बार आपके पास पर्याप्त प्रतिष्ठा होने पर आप किसी भी पोस्ट पर टिप्पणी करने में सक्षम होंगे ; इसके बजाय, ऐसे उत्तर प्रदान करें जिन्हें पूछने वाले से स्पष्टीकरण की आवश्यकता न हो । - समीक्षा से
अर्धरात्रि

मेरा उत्तर ऐप के मूल रंग को बदल रहा है और निश्चित रूप से यह रेडियोबॉटन के रंग को सफेद में बदल सकता है।
इटूरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.