在Android中提供了两种智能输入框,它们是AutoCompleteTextView、MultiAutoCompleteTextView。它们的功能大致一样。显示效果像Google搜索一样,当你在搜索框里输入一些字符时(至少两个字符),会自动弹出一个下拉框提示类似的结果。
下面详细介绍一下:
一、AutoCompleteTextView
1、简介:
一个继承自EditView的可编辑的文本视图,能够实现动态匹配输入的内容。如google搜索引擎当输入文本时可以根据内容显示匹配的热门信息。
2、重要方法:
(1)clearListSelection():清除选中的列表项
(2)dismissDropDown():如果存在关闭下拉菜单
(3)getAdapter():获取适配器
二、MultiAutoCompleteTextView
1、简介:
一个继承自AutoCompleteTextView的可编辑的文本视图,能够对用户键入的文本进行有效地扩充提示,而不需要用户输入整个内容。(用户输入一部分内容,剩下的部分系统就会给予提示)。
用户必须提供一个MultiAutoCompleteTextView.Tokenizer用来区分不同的子串。
2、重要方法:
(1)enoughToFilter():当文本长度超过阈值时过滤
(2)performValidation():代替验证整个文本,这个子类方法验证每个单独的文字标记
(3)setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用户正在输入时,tokenizer设置将用于确定文本相关范围内;
这里我们给出一个简单的例子:
(1)MainActivity.java
package com.example.l0914_5_autocompletetextview; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.MultiAutoCompleteTextView; public class MainActivity extends Activity { private AutoCompleteTextView atv; private MultiAutoCompleteTextView matv; //声明适配器 private ArrayAdapter<String> adapter; //定义数据源 private String data[]={ "怎么学好Android", "上课犯困怎么办", "如何快速减肥", "如何加快电脑开机速度", "中国好声音第二季直播", "中国好声音那英组学员", "SimpleCursorAdapter的使用", "SimpleAdapter的使用", "陈晓", "陈晓春"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); atv=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); matv=(MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1); //初始化适配器 adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,data); //将适配器的数据源适配给AutoCompleteTextView atv.setAdapter(adapter); //设置AutoCompleteTextView输入2个字时自动显示,默认也是2个 atv.setThreshold(2); //将适配器的数据源适配给MultiAutoCompleteTextView matv.setAdapter(adapter); matv.setThreshold(2); //MultiAutoCompleteTextView需要设置的方法setTokenizer matv.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer() ); } }
(2)main_activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <AutoCompleteTextView android:id="@+id/autoCompleteTextView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000000" android:ems="10" android:hint="请输入:"> <requestFocus /> </AutoCompleteTextView> <MultiAutoCompleteTextView android:id="@+id/multiAutoCompleteTextView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000000" android:ems="10" android:hint="请输入:" /> </LinearLayout>
(3)显示效果:
初始效果:
输入中国:
输入Si:
输入陈晓: