2013-06-23 35 views
11

मैं कई पंक्तियाँएंड्रॉइड में एकाधिक पंक्ति रेडियो बटन?

में radiobuttons होने में समस्या हो रही है यह मेरा एक्सएमएल

  <RadioGroup android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       > 
    <RadioGroup android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     > 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/radio_one0Id" 
      android:textSize="13sp" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textSize="13sp" 
      android:text="5%" 
      android:id="@+id/radio_one5Id" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="10%" 
      android:textSize="13sp" 
      android:layout_weight="1" 
      android:id="@+id/radio_one10Id" 
      android:onClick="oneRadioButtonClicked" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="20%" 
      android:layout_weight="1" 
      android:textSize="13sp" 
      android:onClick="oneRadioButtonClicked" 
      android:id="@+id/radio_one20Id" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="35%" 
      android:id="@+id/radio_one35Id" 
      android:textSize="13sp" 
      android:onClick="oneRadioButtonClicked" 
      android:layout_weight="1" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="50%" 
      android:textSize="13sp" 
      android:id="@+id/radio_one50Id" 
      android:onClick="oneRadioButtonClicked" 
      android:layout_weight="1" 
     /> 

     </RadioGroup> 

     <RadioGroup android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="65%" 
      android:textSize="13sp" 
      android:id="@+id/radio_one65Id" 
      android:onClick="oneRadioButtonClicked" 
      android:layout_weight="1" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="75%" 
      android:textSize="13sp" 
      android:layout_weight="1" 
      android:id="@+id/radio_one75Id" 
      android:onClick="oneRadioButtonClicked" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="85%" 
      android:textSize="13sp" 
      android:id="@+id/radio_one85Id" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     android:textSize="13sp" 
      android:text="95%" 
      android:id="@+id/radio_one95Id" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
     /> 
     <RadioButton 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="100%" 
      android:id="@+id/radio_one100Id" 
      android:textSize="13sp" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
     /> 
         </RadioGroup> 
     </RadioGroup> 

है इस कोड

public void oneRadioButtonClicked(View view) { 
    // Is the button now checked? 
    boolean checked = ((RadioButton) view).isChecked(); 

    switch(view.getId()) { 
     case R.id.radio_one0Id: 
      if (checked) 
       one = "0"; 
      break; 
     case R.id.radio_one5Id: 
      if (checked) 
       one = "5"; 
      break; 
     case R.id.radio_one10Id: 
      if (checked) 
       one = "10"; 
      break; 
     case R.id.radio_one20Id: 
      if (checked) 
       one = "20"; 
      break; 
     case R.id.radio_one35Id: 
      if (checked) 
       one = "35"; 
      break; 
     case R.id.radio_one50Id: 
      if (checked) 
       one = "50"; 
      break; 
     case R.id.radio_one65Id: 
      if (checked) 
       one = "65"; 
      break; 
     case R.id.radio_one75Id: 
      if (checked) 
       one = "75"; 
      break; 
     case R.id.radio_one85Id: 
      if (checked) 
       one = "85"; 
      break; 
     case R.id.radio_one95Id: 
      if (checked) 
       one = "95"; 
      break; 
     case R.id.radio_one100Id: 
      if (checked) 
       one = "100"; 
      break; 
     default: 
      System.out.println("default"); 
    } 
} 

है इस तरह enter image description here

यह दोनों का चयन करेंगे दिखेगा 2 पंक्तियों में बटन, मैं चाहता हूं कि वे उन पंक्तियों में केवल एक बटन का चयन करें, किसी भी मदद के लिए धन्यवाद

+1

http: // stackoverflow।कॉम/प्रश्न/10425569/रेडियोग्रुप-साथ-दो कॉलम-जो-दस-रेडियोबुटन/22465700 # 22465700 –

उत्तर

6

लम्बवत अभिविन्यास के साथ एक RadioGroup रखो और दो LinearLayouts जोड़ें: चारों ओर खोज से

  <RadioGroup android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

     <RadioButton 
      android:id="@+id/radio_one0Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one5Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="5%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one10Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="10%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one20Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="20%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one35Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="35%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one50Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="50%" 
      android:textSize="13sp" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="horizontal" > 

     <RadioButton 
      android:id="@+id/radio_one65Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="65%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one75Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="75%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one85Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="85%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one95Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="95%" 
      android:textSize="13sp" /> 

     <RadioButton 
      android:id="@+id/radio_one100Id" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="oneRadioButtonClicked" 
      android:text="100%" 
      android:textSize="13sp" /> 

    </LinearLayout> 

    </RadioGroup> 
+0

सही और सरल समाधान –

+27

यह समाधान मूल पोस्ट में आवश्यकताओं में से किसी एक को हल नहीं करता है, जो कि यह है केवल एक पंक्ति में से किसी एक पंक्ति से केवल एक बटन का चयन करना चाहिए: "यह 2 पंक्तियों में दोनों बटनों का चयन करेगा, मैं चाहता हूं कि यह उन पंक्तियों में केवल एक बटन का चयन करें।" रेडियोओ समूह के लिए रेडियो समूह के प्रत्यक्ष बच्चे होना चाहिए उस समूह के हिस्से के रूप में माना जाता है। – BasicPleasureModel

7

, वहाँ यह करने का एक तरीका होना प्रतीत नहीं होता है, इसका मतलब यह है कि आप इस लागू करना होगा लेआउट व्यवहार मैन्युअल रूप से। दो संभव विकल्प हैं:

  1. RadioGroup की कॉपी बनाएं एक अलग लेआउट का विस्तार करने, या कम से कम आप यह गतिशील नियंत्रित करने की अनुमति है।

  2. रेडियो ग्रुप को प्रतिस्थापित करने के लिए अपने स्वयं के कस्टम लेआउट को लागू करें जो आपकी पसंद का एक लेआउट बढ़ाता है, और ऑनक्लिक लिस्टनर लागू करता है। How to group a 3x3 grid of radio buttons? का एक अच्छा उदाहरण है।

5

यह मेरे लिए काम किया। पहली पंक्ति (NameRadioGroupe2.clearCheck();) अन्य RadioGroup साफ़ करें, और दूसरी पंक्ति बटन कि

public void oneRadioButtonClicked(View view) { 
// Is the button now checked? 
boolean checked = ((RadioButton) view).isChecked(); 

switch(view.getId()) { 
    case R.id.radio_one0Id: { 
     one = "0";  
     NameRadioGroupe2.clearCheck(); 
     NameRadioGroupe1.check(view.getId()); 
     break; 
    } 
      break; 
    case R.id.radio_one5Id: { 
     NameRadioGroupe2.clearCheck(); 
     NameRadioGroupe1.check(view.getId());   
     one = "5"; 
     break; 
     } 
     . 
     . 
     . 
     . 
     . 
       case R.id.radio_one65Id: { 
     NameRadioGroupe1.clearCheck(); 
     NameRadioGroupe2.check(view.getId());   
     one = "65"; 
     break; 
     } 
    case R.id.radio_one75Id: { 
     NameRadioGroupe1.clearCheck(); 
     NameRadioGroupe2.check(view.getId());   
     one = "75"; 
     break; 
     } 
     . 
     . 
     . 
     . 
     . 
0

एक साधारण रेडियो बटनों में से कई पंक्तियों बनाने के लिए जिस तरह से जांच की गई में सही का चिह्न जोड़ने के उपयोग करने के लिए है MultiLineRadioGroup पुस्तकालय। यह आपकी पसंद के अनुसार कई पंक्तियों और स्तंभों का समर्थन करता है।

उपयोग सरल है: अपने प्रोजेक्ट की build.gradle फ़ाइल जोड़ें:

allprojects { 
    repositories { 
     ... 
     maven { 
      url "https://jitpack.io" 
     } 
     ... 
    } 
} 

में अपने एप्लिकेशन का या मॉड्यूल के build.gradle फ़ाइल जोड़ने:

dependencies { 
    ... 
    compile 'com.github.Gavras:MultiLineRadioGroup:v1.0.0.6' 
    ... 
} 

आप एक स्ट्रिंग सरणी का उपयोग कर सकते अपने दृश्य को बनाने के लिए एक्सएमएल में संसाधन:

लेआउट के एक्सएमएल में जोड़ें:

<com.whygraphics.multilineradiogroup.MultiLineRadioGroup xmlns:multi_line_radio_group="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/main_activity_multi_line_radio_group" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     multi_line_radio_group:default_button="button_2" 
     multi_line_radio_group:max_in_row="3" 
     multi_line_radio_group:radio_buttons="@array/radio_buttons" /> 

और arrays.xml में जोड़ें:

<string-array name="radio_buttons"> 
     <item>button_1</item> 
     <item>button_2</item> 
     <item>button_3</item> 
     <item>button_4</item> 
     <item>button_5</item> 
</string-array> 

या उन्हें प्रोग्राम के रूप में जोड़ें:

mMultiLineRadioGroup.addButtons("button to add 1", "button to add 2", "button to add 3"); 
+0

यह भी, जैसे मैंने कोशिश की है, लपेट नहीं है। आप 'max_in_row' का उपयोग कर बटनों की संख्या को ठीक करते हैं। यह केवल तभी अच्छा है जब आप मैन्युअल रूप से लाइनों की संख्या तय करना चाहते हैं। यह स्वचालित रूप से फ्लेक्सबॉक्स की तरह लपेटता नहीं है। –

संबंधित मुद्दे