2010-02-18 11 views
12

Sto scrivendo un'app Android che utilizza AutoCompleteTextView proprio come l'esempio dell'API. Il problema è che il mio testo è troppo lungo e deve essere completato quando si verifica il dropdown. Ho un file list_item.xml personalizzato, ma viene visualizzata solo una riga di testo. Il layout list_item.xml viene disposto su 2 righe se utilizzato con uno strumento di selezione, ma non con AutoCompleteTextView.Android: imposta il ritorno a capo AutoCompleteTextView su 2 o più righe

main.java

public class main extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES); 
     textView.setAdapter(adapter); 
    } 

     static final String[] COUNTRIES = new String[] { 
      "This is the first line that is too long and it needs to wrap content", 
      "Albania", "Algeria", "American Samoa", "Andorra", 
      "This is a second line that also needs to wrap its content", 
       "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium" 
     }; 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="5dp"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Country" /> 

    <AutoCompleteTextView android:id="@+id/autocomplete_country" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="5dp"/>   
</LinearLayout> 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="16sp" 
    android:textColor="#000"  
    > 
</TextView> 
+0

Perché la risposta non è stata accettata? – viplezer

risposta

28

Avvolgere il TextView in un layout e l'uso che per la vostra ArrayAdapter

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/item" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="10dp" 
     android:textSize="16sp" 
     android:textColor="#000"  
     /> 

</LinearLayout> 

E i nuovi inviti a presentare l'ArrayAdapter:

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item, R.id.item, COUNTRIES); 
    textView.setAdapter(adapter); 
+1

Ha funzionato per me. Grazie mille – Sakthimuthiah

+1

Per me ha smesso di reagire alla selezione di un oggetto (onItemSelected) smesso di ricevere le notifiche. http://stackoverflow.com/questions/25751648/autocompletetextview-stops-listening-to-setonitemclicklistener – Siddharth

+0

Grazie, lavora per me. – Fire

4

modo semplice:
adattatore = new ArrayAdapter (getApplicationContext(), android.R.layout.two_line_list_item, android.R.id.text1, ....);

android.R.layout.two_line_list_item questo è facile cambiare.

+0

Penso che dovresti usare Activity Contesto qui invece del contesto dell'applicazione: http://stackoverflow.com/a/7298955/1199132 –

Problemi correlati