AutoCompleteTextView的Android自定义布局

时间:2013-03-26 16:09:24

标签: android autocompletetextview

我可能会遗漏一些简单的内容,但我有一个 AutoCompleteTextView ,其中包含一些非常长的项目。单击一个时,它会在EditText中正确显示文本并将其跨越多行。

但是,我希望它在弹出窗口中也有多行,以便用户可以看到他们正在选择哪个项目。

这是我的自定义布局:

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

这是我对数组和适配器的初始化:

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

mBuildingDesc.setAdapter(adapter);

1 个答案:

答案 0 :(得分:11)

我的猜测是,AutoCompleteTextView仅限于singleLine,因此使用默认TextView的自定义布局应该可以正常工作。

您需要制作一个新的Layout并将其命名为custom_item.xml,然后按照这样做...

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

然后在AutoCompleteTextView上使用Adapter时

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