2009-12-12 18 views
5

एंड्रॉइड 1.6 में, स्पिनर (ड्रॉप-डाउन मेनू) टैप करने पर, स्पिनर विकल्प के बगल में रेडियो बटन दिखाई देते हैं। मैं उन रेडियो बटन को कैसे हटा सकता हूं ताकि केवल विकल्प टेक्स्ट बना रहता है?एंड्रॉइड स्पिनर - रेडियो बटन कैसे निकालें?

उत्तर

23

बस रेडियो बटन को हटाने के लिए, आपको अपने एडाप्टर क्लास की आवश्यकता नहीं है।

लेआउट

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

में एक dropdown_item.xml बनाएं तो कोड में निम्नलिखित फोन करना।

arrayAdapter.setDropDownViewResource(R.layout.dropdown_item); 

डिफ़ॉल्ट स्पिनर ड्रॉपडाउन आइटम एक चेकडटेक्स्ट व्यू है जिसमें रेडियो बटन है। यहां आप इसे टेक्स्ट व्यू के साथ बदल दें।

+0

अच्छा और सरल! – Bruiser

+0

'एंड्रॉइड है: id =" @ android: id/text1 "' वैकल्पिक? – cprcrack

4

यदि आप स्पिनर सूची पर रेडियो बटन से छुटकारा पाना चाहते हैं तो आपको पंक्ति के लिए अपना खुद का लेआउट देना होगा।
नीचे दिए गए उदाहरण पर एक नज़र डालें: आईडी = "@ + आईडी:


package com.ramps; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.SpinnerAdapter; 

public class MySpinner extends Activity { 
    //data that will be used as a spinner options 
    private static String data[] = {"one", "two", "three"}; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //main.xml file contains spinner 
     setContentView(R.layout.main); 
     Spinner spinner = (Spinner) findViewById(R.id.spinner); 
     //create your own adapter 
     MySpinnerAdapter adapter = new MySpinnerAdapter(this,R.layout.custom_spinner_row,R.id.text, data); 
     //set your custom adapter 
     spinner.setAdapter(adapter); 
    } 


    private class MySpinnerAdapter extends ArrayAdapter{ 

     public MySpinnerAdapter(Context context, int resource, 
       int textViewResourceId, String[] objects) { 
      super(context, resource, textViewResourceId, objects);   
     } 

    } 
} 


स्पिनर पंक्ति के लिए कस्टम लेआउट एक TextView तत्व है जो आईडी" पाठ "(एंड्रॉयड है के साथ सिर्फ एक सरल LinearLayout है/पाठ ")

यह एक साधारण उदाहरण है। यदि आपको केवल टेक्स्ट व्यू की तुलना में अधिक फैंसी लेआउट की आवश्यकता है तो आपको शायद MySpinnerAdapter की getView() विधि को ओवरराइड करना होगा।

5

आप android लेआउट

android.R.layout.simple_spinner_item 
बजाय

android.R.layout.simple_spinner_dropdown_item 

उपयोग कर सकते हैं, लेकिन मैं @kimkunjj जवाब की सलाह देते हैं, तो यह आपको लेआउट का नियंत्रण दे देंगे।

1

"android.R.layout.simple_spinner_item" काम करता है,

प्रोग्राम के रूप में है कि क्या है:

modeSpinner=new Spinner(layout.getContext()); 
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(layout.getContext(),  
    android.R.layout.simple_spinner_item, Arrays.asList(modes)); 
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
0

"साफ" ऐसा करने का तरीका (सिर्फ चिह्न निकालने और नहीं स्पर्श anythinbg किसी और पाठ शैली, मद आकार आदि सहित) (ऊपर उत्तर) में की तरह कस्टम एडाप्टर बनाने के लिए है:

public class SimpleSpinnerArrayAdapter extends ArrayAdapter<String> { 

    public SimpleSpinnerArrayAdapter(Context context, String[] data) { 
     super(context, android.R.layout.simple_spinner_item, data); 
     this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    } 

    public SimpleSpinnerArrayAdapter(Context context, List<String> data) { 
     super(context, android.R.layout.simple_spinner_item, data); 
     this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    } 

    /** 
    * Returns default dropdown view with removed checkbox 
    */ 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View view = super.getDropDownView(position, convertView, parent); 
     if (view != null && view instanceof CheckedTextView) { 
      ((CheckedTextView) view).setCheckMarkDrawable(null); 
     } 
     return view; 
    } 
} 

कृपया ध्यान दें getDropDownView() विधि जो ड्रॉपडाउन सूची आइटम के लिए दृश्य लौटाती है। आप यहां किसी भी कस्टम व्यू का उपयोग कर सकते हैं लेकिन यदि आप डिफ़ॉल्ट दृश्य से चिपकना चाहते हैं तो आपको शायद उपर्युक्त कोड का उपयोग करना चाहिए।

1

यदि आपने अपने प्रोजेक्ट में एंड्रॉइड समर्थन लाइब्रेरी संस्करण 18 या उससे अधिक का संस्करण शामिल किया है तो आप support_simple_spinner_dropdown_item के साथ संसाधन आईडी simple_spinner_dropdown_item को प्रतिस्थापित कर सकते हैं। वह रेडियो बटन को हटा देगा।

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