如何为AutoCompleteTextView创建自己的下拉视图?

时间:2012-11-19 16:53:49

标签: android popupwindow autocompletetextview

我想在AutoCompleteTextView的下拉建议列表的右侧添加PgUp / PgDn按钮。我使用上面描述的布局创建了我自己的弹出窗口(布局xml如下所示)。有谁能让我知道如何用我自己的弹出窗口替换AutoCompleteTextView的下拉列表视图?

这是我想要的样子:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
    android:weightSum="10">

    <ListView
        android:id="@+id/listView"
        android:layout_width="0dp"
        android:layout_height="wrap_content" 
        android:layout_weight="9"
        android:background="@drawable/frame">
    </ListView>
    <RelativeLayout android:id="@+id/pageUpDown" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent">
        <ImageButton android:id="@+id/pageUp" android:src="@drawable/pct_up_icon" android:background="@null"  android:layout_width="48dp" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:text="" android:layout_height="48dp"></ImageButton>
        <ImageButton android:id="@+id/pageDown" android:src="@drawable/pct_down_icon" android:background="@null" android:layout_width="48dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="" android:layout_height="48dp"></ImageButton>
    </RelativeLayout>

</LinearLayout>

3 个答案:

答案 0 :(得分:2)

为了简单地完成这项工作,我建议您设计布局(使用两个按钮)并设置为AutoCompleteTextView,如下所示:

android:completionHintView="@layout/your_custom_view"

稍后,您可以自定义按钮的单击事件以执行所需的分页操作。

答案 1 :(得分:0)

前一段时间我自己问了这个问题,并自己找到了解决方案。点击这里:

Style on AutoCompleteTextView dropdown

答案 2 :(得分:0)

使用AutocompleteTextView,设置高阈值“setTreshold()”并在按钮点击时调用showDropDown()

代码:

String[] values = {
"abc_0", "def_0", "ghi_0",
"abc_1", "def_1", "ghi_1",
"abc_2", "def_2", "ghi_2",
"abc_3", "def_3", "ghi_3",
};

 final AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.actv);
 final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, values);
actv.setAdapter(adapter);
actv.setThreshold(256); // if not enough set Integer.MAX_VALUE
findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
    CharSequence constraint = actv.getText();
    adapter.getFilter().filter(constraint);
    actv.showDropDown();
}
});