2010-02-18 9 views
12

Estoy escribiendo una aplicación para Android que usa un AutoCompleteTextView igual que el ejemplo API. El problema es que mi texto es demasiado largo y debe ajustarse cuando se produce el menú desplegable. Tengo un list_item.xml personalizado, pero solo se muestra una línea de texto. El diseño list_item.xml se ajusta a 2 líneas si se usa con un spinner, pero no con AutoCompleteTextView.Android: haga que el menú desplegable AutoCompleteTextView se ajuste a 2 líneas o más

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

¿Por qué no se acuña la respuesta? – viplezer

Respuesta

28

Envolver el TextView en un diseño y el uso que para su 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> 

Y las nuevas convocatorias de la 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

Funcionó para mí. Muchas gracias – Sakthimuthiah

+1

Para mí dejó de reaccionar cuando seleccioné un ítem (onItemSelected) dejé de recibir notificaciones. http://stackoverflow.com/questions/25751648/autocompletetextview-stops-listening-to-setonitemclicklistener – Siddharth

+0

Gracias, funciona para mí. – Fire

4

manera fácil:
adaptador = new ArrayAdapter (getApplicationContext(), android.R.layout.two_line_list_item, android.R.id.text1, ....);

android.R.layout.two_line_list_item esto es un cambio fácil.

+0

Creo que debería usar el contexto de la actividad aquí en lugar del contexto de la aplicación: http://stackoverflow.com/a/7298955/1199132 –

Cuestiones relacionadas