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

4
我希望在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个回答

2

为了简单地完成这个任务,我建议您设计一个带有两个按钮的布局,并将其设置到您的AutoCompleteTextView中,如下所示:

android:completionHintView="@layout/your_custom_view"

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

谢谢Wagas。completionHintView是用于单个建议项还是显示建议列表的弹出窗口?我需要替换弹出窗口。我尝试在android:completionHintView中使用布局(在我的原始问题帖子中),但遇到了NullPointerException。 - j1999
空指针异常是由其他原因引起的。但下拉视图仍然是相同的。 - j1999
也许你应该尝试创建一个自定义的ViewGroup(EditText + PopupWindow),以模拟这种行为。 - waqaslam
我需要一个下拉菜单,带有两个按钮,就像我刚刚在原始帖子中添加的图片一样。我认为completeHintView用于在列表中显示的项目。 - j1999

0

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接