2012-07-30 14 views
5

Ho alcuni problemi con lo spinner. A seconda delle mie date, devo aggiungere a uno TableRow a TextView con uno EditText o uno Spinner. Il mio array che deve essere visualizzato in Spinner è un po 'lungo. Ho provato il mio codice con una serie di testi brevi, e sembra che questo:Spinner con testo lungo non funzionante bene

enter image description here

Qui l'unico problema è che non è filatore fill_parent.

Se metto il mio allineamento Spinner sembra che questo:

enter image description here

In questo caso, il filatore Non sembra un filatore e l'EditText non è più visibile. Quando scelgo la filatrice, appare questo punto di vista:

enter image description here

Qui ho bisogno di visualizzare tutto il testo della matrice. Questo è il mio codice:

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)); 

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

Qualcuno può aiutarmi a risolverlo? Ogni idea è benvenuta. Grazie in anticipo.

+0

una volta controlla questo link http: //android-coding.blogspot.i n/2011/12/dynamic-change-content-of-spinner.html – shassss

+0

La risposta di questa domanda ha risolto il mio problema: http://stackoverflow.com/questions/2325242/android-how-do-i-add-1 -views-in-one-cell-for-tablerow – Gabrielle

+0

@Bhargavi Pubblicherò presto una risposta con il mio codice. – Gabrielle

risposta

2

Per il mio problema che ho trovato questa soluzione:

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); 

dove le lingue è un String[] e 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

ho un'idea che si può creare adattatore personalizzato. dal seguente codice

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; 
    } 
    } 

utilizzando questa classe SpinnerAdapter

Problemi correlati