AutoCompleteTextView继承自TextView,是一种可以实现自动补全的功能的TextView。先看效果:
该功能在目前很常见,例如在用户进行登录的时候或者注册的时候都用到了这种功能,在Android中这样的效果我们可以借助AutoComleteTextView来实现。
为了实现补全功能AutoCompleteTextView需要和Adapter(适配器)一起使用。Android为我们封装好了一些简单的适配器可以直接使用,当然我们也可以使用自定义的适配器来进行补充。
先从简单的开始,我们直接使用Android系统为我们提供的适配器来实现补全功能:
1、 先在xml文件中添加AutoCompleteTextView控件
<AutoCompleteTextView
android:id="@+id/autoCompeteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:inputType="number"/>
注意inputType属性是在这里申明了该控件只接受数字型的数据输入。
2、在java文件中申明并获取该控件
private AutoCompleteTextView autoCompleteTextView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_atctextview);
autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompeteTextView);
}
3、为AutoCompleteTextView设置适配器
autoCompleteTextView.setThreshold(1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,test);
autoCompleteTextView.setAdapter(adapter);
setThreshold()方法是设置当用户输入多少字符时开始进行提示,不写这个方法也行,默认的设置为2。
在new ArrayAdapter时需要传入三个参数。
第一个参数是当前的上下文,暂且不提。
第二个参数是显示提示时的View,在这里我们传入的是系统为我们提供好的一个xml布局文件,在该xml布局文件里只有一个TextView控件。
第三个参数是我们设置的提示数据,当用户的输入和我们传入的提示数据匹配时,才会出现补全提示。
在这里我设置的提示数据是一个String数组
private String[] test = {
"123","234","345","456"};
整体代码如下: