Android AutoCompleteTextView使用教程:完整示例与最佳实践
在Android应用程序中,AutoCompleteTextView是一个可编辑的文本视图,它在用户输入时自动显示完成建议。在本教程中,我们将使用ArrayAdapter来定义建议列表,并在我们的应用程序中实现Android的AutoCompleteTextView。
Android AutoCompleteTextView 概述
AutoCompleteTextView是一个组件,用于在可编辑文本字段中输入时显示建议内容。建议列表以下拉菜单的形式展示,用户可以从中选择所需的项。建议列表是从一个适配器中获取的,并且只有在达到指定的字符数阈值后才会显示出来。要使用AutoCompleteThreshold字段,需要在xml布局中进行定义,如下所示:
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="65dp"
android:ems="10" >
</AutoCompleteTextView>
注意:android:ems或setEms(x)会根据x个”M”字母的数量设置TextView的宽度,而不考虑实际文本的长度和字体大小。下面是一些Autocomplete列表的重要方法。
- getAdapter():此方法返回一个可过滤的列表适配器,用于自动完成
- getCompletionHint():此方法返回底部匹配列表显示的可选提示文本
- getDropDownAnchor():此方法返回自动完成下拉列表所附加到的视图的id
- getListSelection():此方法返回下拉视图选择的位置(如果有的话)
- isPopupShowing():此方法指示弹出菜单是否正在显示
- setText(CharSequence text, boolean filter):此方法设置文本,但可以禁用过滤
- showDropDown():此方法在屏幕上显示下拉菜单
setAdapter方法用于设置autoCompleteTextView的适配器。让我们转到其编码部分。
Android AutoCompleteTextView项目结构
这个项目在MainActivity的布局中包含一个简单的TextView和一个AutoCompleteTextView。ArrayAdapter中包含以下水果:苹果、香蕉、樱桃、枣、葡萄、猕猴桃、芒果、梨。
Android AutoCompleteTextView 示例代码
MainActivity的布局定义如下。activity_main.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="15dp"
android:text="请从以下水果中选择一种(苹果 香蕉 樱桃 枣 葡萄 猕猴桃 芒果 梨)" />
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView"
android:layout_marginLeft="36dp"
android:layout_marginTop="17dp"
android:ems="10"
android:text="">
<requestFocus />
</AutoCompleteTextView>
</RelativeLayout>
下面是MainActivity.java的定义。
package com.Olivia.autocomplete;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
String[] fruits = {"苹果", "香蕉", "樱桃", "枣", "葡萄", "猕猴桃", "芒果", "梨"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建包含水果名称列表的ArrayAdapter实例
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this, android.R.layout.select_dialog_item, fruits);
//获取AutoCompleteTextView的实例
AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
actv.setThreshold(1); //将从第一个字符开始工作
actv.setAdapter(adapter); //将适配器数据设置到AutoCompleteTextView中
actv.setTextColor(Color.RED);
}
}

下载 Android AutoCompleteTextView 项目