क्या एंड्रॉइड रेडियो बटन समूह में रेडियो बटन आइकन बदलना संभव है


95

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

क्या रेडियो बटन आइकन बदलना संभव है? उदाहरण के लिए, क्या प्रत्येक पंक्ति के लिए एक कस्टम लेआउट बनाना संभव है और उस लेआउट में मेरा अपना आइकन संदर्भित है और फ़ॉन्ट एट अल बदल सकता है।

जवाबों:


168

हाँ, यह संभव है कि आपको रेडियो बटन के लिए अपनी शैली को परिभाषित करना होगा, Res / मान / स्टाइल.xml पर:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme">
   <item name="android:radioButtonStyle">@style/RadioButton</item>
</style>
<style name="RadioButton" parent="@android:style/Widget.CompoundButton.RadioButton">
   <item name="android:button">@drawable/radio</item>
</style>
</resources>

यहां 'रेडियो' एक स्टेटफुल ड्रॉबल होना चाहिए, रेडियो। xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_window_focused="false"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_window_focused="false"
        android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="false" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="true" android:state_focused="true"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_focused="true"
        android:drawable="@drawable/radio_normal_off" />
    <item android:state_checked="false" android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:drawable="@drawable/radio_hover" />
    </selector>

फिर बस कस्टम विषय को या तो पूरे ऐप पर या अपनी पसंद की गतिविधियों पर लागू करें।

विषयों और शैलियों के बारे में अधिक जानकारी के लिए http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/ देखें जो अच्छा मार्गदर्शक है।


13
आप केवल इसके लिए एक अलग कस्टम शैली को परिभाषित करने के बजाय, रेडियो बटन पर ही Android: बटन गुण सेट कर सकते हैं।
Yoni Samlan

7
यह सच है, लेकिन यह बहुत अच्छा अभ्यास नहीं है, क्योंकि आपके पास आमतौर पर सिर्फ एक रेडियो बटन है।
कोन्स्टेंटिन बुरोव

अगर मैं एक 9 पैच छवि का उपयोग कर रहा हूँ तो @KonstantinBurov क्या है?
हेड्स

@KonstantinBurov जब तक आप क्रमिक रूप से बटन नहीं जोड़ रहे हैं, उस स्थिति में यह बहुत अच्छा है :)
Cornholio

1
समर्थन विषय के लिए <style name = "CustomTheme" parent = "android: Theme"> <item name = "android: RadioButtonStyle"> @ शैली / RadioButton </ आइटम> <आइटम नाम = "RadioButtonStyle"> @ शैली का उपयोग करना चाहते हैं। / रेडियोबटन </ वस्तु> </ style>
ध्रुव मेवाड़ा

30

आप सामान्य बटन की तरह कस्टम इमेज को रेडियोबूटन में रख सकते हैं। इसके लिए ड्रा करने योग्य फ़ोल्डर में एक एक्सएमएल फ़ाइल बनाएं जैसे

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/sub_screens_aus_hl" 
    android:state_pressed="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_checked="true"/>  
<item android:drawable="@drawable/sub_screens_aus" 
    android:state_focused="true" />
<item android:drawable="@drawable/sub_screens_aus_dis" />  
</selector> 

यहां आप रेडियोबॉटन के लिए 3 अलग-अलग छवियों का उपयोग कर सकते हैं

और इस फ़ाइल का उपयोग रेडियोबटन की तरह करें:

android:button="@drawable/aus"
android:layout_height="120dp"
android:layout_width="wrap_content" 

13

केवल रेडियो बटन को बदलने का आसान तरीका केवल चयन योग्य अधिकार के लिए चयनकर्ता निर्धारित करना है

<RadioButton
    ...
    android:button="@null"
    android:checked="false"
    android:drawableRight="@drawable/radio_button_selector" />

और चयनकर्ता है:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_checkbox_checked" android:state_checked="true" />
    <item android:drawable="@drawable/ic_checkbox_unchecked" android:state_checked="false" /></selector>

बस इतना ही


1
सबसे अच्छा समाधान, मेरे मामले के लिए मैंने 'drawableRight' को 'बटन' में भी बदल दिया और चयनकर्ता xml में कुछ पैडिंग जोड़ दी
F-1

यह सबसे अच्छा उपाय है। मुझे इस तरीके का उपयोग किया गया था और यह ठीक काम करता है। लेकिन एंड्रॉइड के एंड्रॉइड पर माइग्रेट करने के बाद: बटन = "@ null" काम नहीं करता है और हम हर आइटम के लिए दो रेडियो बटन आइकन देखते हैं! ।
मनियाक


0

यहाँ शायद एक त्वरित दृष्टिकोण है,

यहां छवि विवरण दर्ज करें

ऊपर दिखाए गए दो आइकन के साथ, आपके पास कुछ RadioGroupऐसा होगा

यहां छवि विवरण दर्ज करें

  • RadioGroupक्षैतिज के लिए अभिविन्यास बदलें
  • प्रत्येक के लिए RadioButtonके गुण, के लिए आइकन देने की कोशिश Button के तहत CompoundButton,
  • पैडिंग और आकार समायोजित करें,
  • और जब जाँच की पृष्ठभूमि विशेषता सेट करें।

0

यदि आप इसे प्रोग्रामेटिक रूप से करना चाहते हैं,

checkBoxOrRadioButton.setButtonDrawable(null);
checkBoxOrRadioButton.setBackgroundResource(R.drawable.resource_name);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.