2012-07-30 5 views
5

मुझे स्पिनर के साथ कुछ समस्याएं हैं। मेरी तिथियों के आधार पर, मुझे TextView पर EditText या Spinner के साथ जोड़ना होगा। मेरी सरणी जो स्पिनर में प्रदर्शित होना चाहिए वह थोड़ा लंबा है। मैं कम ग्रंथों के साथ एक सरणी के साथ अपने कोड का परीक्षण किया है, और यह इस तरह दिखता है:लंबे पाठ के साथ स्पिनर ठीक काम नहीं कर रहा है

enter image description here

यहाँ एक समस्या यह है कि स्पिनर fill_parent नहीं है।

अगर मैं यह ऐसा दिखाई देगा स्पिनर करने के लिए अपने सरणी डाल:

enter image description here

इस मामले में, स्पिनर एक स्पिनर की तरह नहीं दिखता और EditText किसी भी अधिक दिखाई नहीं देता है। जब मैं स्पिनर चुनते हैं, तो यह इस दृश्य दिखाई देता है:

enter image description here

यहाँ मैं सरणी के सभी पाठ प्रदर्शित करने की जरूरत है। यह मेरा कोड है:

TableRow.LayoutParams lp = new TableRow.LayoutParams(
      TableRow.LayoutParams.FILL_PARENT , TableRow.LayoutParams.WRAP_CONTENT); 
tablerow_product[i] = new TableRow(viewToLoad.getContext()); 
tablerow_product[i].setLayoutParams(lp); 

product_spinner[i] = new Spinner(viewToLoad.getContext()); 
product_spinner[i].setLayoutParams(lp); product_spinner[i].setBackgroundResource(R.drawable.spinner_selector); 
String[] proba={"red","blue"}; //first image is with this test array 
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(viewToLoad.getContext(), com.Orange.R.layout.my_spinner_textview,spinnerArray);          spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
product_spinner[i].setAdapter(spinnerArrayAdapter); 
tablerow_product[i].addView(product_spinner[i]);           Themes_TableLayout.addView(tablerow_product[i],new TableLayout.LayoutParams(TableRow.LayoutParams.FILL_PARENT,     TableRow.LayoutParams.WRAP_CONTENT)); 

और my_spinner_textview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    style="?android:attr/spinnerItemStyle" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@drawable/textorange_selected" 
    android:gravity="left" 
    android:singleLine="false" 
    android:ellipsize="end"/> 

किसी को भी मुझे इसे हल करने में मदद कर सकते हैं? किसी भी विचार का स्वागत है। अग्रिम में धन्यवाद।

+0

एक बार इस लिंक को http: //android-coding.blogspot.i देखें n/2011/12/गतिशील-परिवर्तन-सामग्री के- spinner.html – shassss

+0

इस सवाल का जवाब मेरी समस्या हल: http://stackoverflow.com/questions/2325242/android-how-do-i-add-1 -व्यू-इन-वन-सेल-फॉर-टैबरलो – Gabrielle

+0

@ भार्गवी मैं जल्द ही अपने कोड के साथ एक उत्तर पोस्ट करूंगा। – Gabrielle

उत्तर

2

का उपयोग करके मैं इस समाधान पाया:

Spinner language = (Spinner) findViewById(com.Orange.R.id.current_language_text); 

ArrayAdapter adapter = new ArrayAdapter(this, 
       com.Orange.R.layout.my_spinner_textview, languages); 
adapter.setDropDownViewResource(com.Orange.R.layout.multiline_spinner_dropdown_item); 
language.setAdapter(adapter); 

जहां भाषाओं एक String[] और my_spinner_textview.xml है:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/textview_spinner" 
    style="?android:attr/spinnerItemStyle" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@drawable/textorange_selected" 
    android:paddingLeft="5dp" 
    android:singleLine="true" 
    android:ellipsize="end" 
/> 
1

मेरे पास एक विचार है कि आप कस्टम एडाप्टर बना सकते हैं। कोड

class SpinnerAdapter extends ArrayAdapter<String> 
{ 
    Context context; 
    List<String> items; 
    public SpinnerAdapter(final Context context, 
      final int textViewResourceId, List<String> vendor_name) { 
     super(context, textViewResourceId, vendor_name); 
     this.items = vendor_name; 
     this.context = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater inflater = LayoutInflater.from(context); 
      convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false); 
     } 
     // android.R.id.text1 is default text view in resource of the android. 
     // android.R.layout.simple_spinner_item is default layout in resources of android. 

     TextView tv = (TextView) convertView.findViewById(android.R.id.text1); 
     tv.setText(items.get(position)); 
     tv.setTextColor(Color.BLACK); 
     tv.setTextSize(9); 
      return convertView; 
    } 
    } 

निम्नलिखित मेरी समस्या के लिए यह SpinnerAdapter वर्ग

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