2013-03-26 10 views
5

Ich vermisse etwas hier einfach, aber ich habe eine AutoCompleteTextView, die einige sehr lange Elemente enthält. Wenn man darauf klickt, wird der Text im EditText korrekt angezeigt und über mehrere Zeilen verteilt.Android benutzerdefinierte Layout für AutoCompleteTextView

Allerdings möchte ich, dass es in mehreren Zeilen im Popup ist, so dass die Benutzer sehen können, welches Element sie auswählen.

Hier ist mein benutzerdefiniertes Layout:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:ellipsize="none" 
    android:maxLines="100" 
    android:scrollHorizontally="false" /> 

Hier ist meine Initialisierung des Arrays und Adapter:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       R.layout.dropdown_item_wrap_line, 
       getResources().getStringArray(R.array.building_descriptions)); 

mBuildingDesc.setAdapter(adapter); 
+0

Sie benötigen mehrere Zeilen innerhalb eines Elements? Ich meine, eine einzelne Ansicht in AutoCompleteTextView sollte zwei Zeilen enthalten, und Sie verwenden die zweite Zeile, um einige andere Informationen anzuzeigen? Ich bin richtig? –

+0

Entschuldigung nein, ich meine nur für eine Ansicht, die sich umschließt, anstatt abzuschneiden, meine Artikel können ziemlich lang sein (zB "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ultricies tempus neque, nec egestas erat tincidunt et.") –

Antwort

9

Meine Vermutung ist, dass Ihre AutoCompleteTextView-singleLine begrenzt ist, so ein eigenes Layout verwenden mit Standard TextView sollte sauber funktionieren.

Sie müssen eine neue Layout machen und es custom_item.xml, dann tun es so nennen ...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/autoCompleteItem" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dp" 
     android:textSize="14sp"  
     /> 

</LinearLayout> 

Dann, während mit Adapter auf AutoCompleteTextView

tun
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_item, R.id.autoCompleteItem, StringArray); 
textView.setAdapter(adapter); 
+0

Das funktioniert perfekt! Ich danke dir sehr! –

+0

Dies funktioniert, wie auch immer, wenn Sie den Text des Artikels erhalten möchten, könnten Sie ein Problem haben. Zuerst legen Sie also Ihren setOnItemClickListener und dann die param View-Ansicht fest, es ist kein TextView mehr, sondern ein LinearLayout. – cutiko

+0

Ich denke nicht, ich habe benutzerdefinierte ArrayAdapter und es funktioniert mit einzelnen Zeilen, obwohl ich nicht mit benutzerdefinierten Layout überprüft. Ich werde es hier überprüfen und aktualisieren :) –