2010-02-18 9 views
12

Piszę aplikację na Androida, która korzysta z AutoCompleteTextView, podobnie jak przykład interfejsu API. Problem polega na tym, że mój tekst jest za długi i musi się zawijać, gdy pojawi się menu rozwijane. Mam niestandardowy plik list_item.xml, ale wyświetlany jest tylko jeden wiersz tekstu. Układ list_item.xml jest zawijany do 2 linii, jeśli jest używany z pokrętłem, ale nie z funkcją AutoCompleteTextView.Android: Ustaw zawijanie listy AutoCompleteTextView na 2 linie lub więcej

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

Dlaczego ta odpowiedź nie jest odpowiednia? – viplezer

Odpowiedz

28

Owiń TextView w układzie i użyć jej do 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> 

I nowe wzywa do 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

To działało dla mnie. Dziękuję bardzo – Sakthimuthiah

+1

Dla mnie przestał reagować na wybór elementu (onItemSelected) przestał otrzymywać powiadomienia. http://stackoverflow.com/questions/25751648/autocompletetextview-stops-listening-to-setonitemclicklistener – Siddharth

+0

Thanx, działa dla mnie. – Fire

4

łatwy sposób:
adapter = new ArrayAdapter (getApplicationContext(), android.R.layout.two_line_list_item, android.R.id.text1, ....);

android.R.layout.two_line_list_item to łatwa zmiana.

+0

Myślę, że powinieneś użyć kontekstu aktywności tutaj zamiast kontekstu aplikacji: http://stackoverflow.com/a/7298955/1199132 –

Powiązane problemy