2013-03-26 5 views
5

Może brakuje mi czegoś prostego tutaj, ale mam AutoCompleteTextView, który zawiera bardzo długie pozycje. Kiedy kliknie się, pokazuje tekst poprawnie w EditText i rozciąga go na kilka linii.Układ niestandardowy Android dla AutoCompleteTextView

Jednak chcę, aby była w wielu liniach na wyskakującym okienku, tak aby użytkownicy mogli zobaczyć, który element wybierają.

Oto mój niestandardowy układ:

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

Oto moja inicjalizacji tablicy i adaptera:

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

mBuildingDesc.setAdapter(adapter); 
+0

Czy trzeba wiele wierszy w elemencie? Chodzi mi o to, że pojedynczy widok w AutoCompleteTextView powinien zawierać dwa wiersze, a drugi wiersz będzie używany do wyświetlania innych informacji? Mam rację? –

+0

Przepraszam, nie, mam na myśli tylko jeden widok, który zamiast owijać, obraca się, moje przedmioty mogą być dość długie (np. "Lorem ipsum dolor sit amet, consectetur adipiscing elit." Ultrasie ultricaies tempus neque, nec egestas erat tincidunt et. ") –

Odpowiedz

9

Domyślam się, że AutoCompleteTextView jest ograniczona do singleLine, więc przy użyciu niestandardowego układu z domyślnym TextView powinien działać zgrabnie.

Trzeba będzie zrobić nowy Layout i nazwać go custom_item.xml, a następnie zrobić to w ten sposób ...

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

Następnie podczas korzystania z zasilacza na AutoCompleteTextView zrobić

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

To działa idealnie! Dziękuję bardzo! –

+0

To działa, jak zawsze, jeśli masz zamiar uzyskać tekst przedmiotu, możesz mieć problem. Tak więc najpierw ustawić setOnItemClickListener, a następnie widoku widoku Param, nie jest już TextView, ale LinearLayout. – cutiko

+0

Nie sądzę, użyłem niestandardowego arrayAdapter i działa on z pojedynczymi liniami, chociaż nie sprawdziłem z niestandardowym układem. Zamierzam to sprawdzić i zaktualizować tutaj :) –