看看效果
自动完成文本框是从EditText派生出来的,实际上也是一个文本编辑框,但是比普通的编辑框多了一个功能:当用户输入一定字符之后,自动完成文本框会显示一个下拉菜单,供给用户从中选择,当用户选择某个菜单选项之后,AutoCompleteTextView按照用户的选择自动填写改文本框
其属性有
android:completionHint setCompletionHint(CharSequence) 设置下拉菜单中的提示标题
android:completionHintView 设置下拉菜单中提示标题的视图
android:completionThreshold setThreshold(int) 设置用户至少输入几个字符才会显示提示
adnroid:dropDownAnchor setDropDownAnchor(int) 设置下拉菜单的定位“锚点”组件,如果没有指定该属性,将使用该TextView本身作为定位”锚点“组件
adnroid:dropDownHeight setDropDownHeight(int) 设置下拉菜单的高度
android:dropDownHorizontalOffest 设置下拉菜单与文本框之间的水平偏移,下拉菜单默认与文本框左对齐
adnroid:dropDownVerticalOffest 设置下拉菜单与文本框之间的垂直偏移,下拉菜单默认紧跟文本框
android:dropDownWidth setDropDownWidth(int) 设置下拉菜单的宽度
android:popupBackground setDropDownBackgroundResource(int) 设置下拉菜单的背景
使用AutoCompleteTextView要为他设置一个带预设文字的Adapter,
AutoCompleteTextView还有一个子类,MultiAutoCompleteTextView,他的功能与AutoCompleteTextView基本一样,不同的是MultiAutoCompleteTextView支持提示多次,也就是允许输入多个提示项,多个提示以分隔符分隔,方法为setTokenizer()
下面来看看demo的具体实现:
<AutoCompleteTextView
android:id="@+id/actv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="请选择..."
android:completionThreshold="1"/>
<MultiAutoCompleteTextView
android:id="@+id/mauto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"/>
然后就是实例化,添加要显示的数据,设置adapter:
private AutoCompleteTextView actv;
private MultiAutoCompleteTextView mauto;
private String[] words = {"bear","board","block","break","sdfsdfadfadf","black","blue"};
//创建一个ArrayAdapter,封装数组
ArrayAdapter<String> mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, words);
actv = (AutoCompleteTextView) findViewById(R.id.actv);
//设置adapter
actv.setAdapter(mAdapter);
//可以多次选择
mauto = (MultiAutoCompleteTextView) findViewById(R.id.mauto);
mauto.setAdapter(mAdapter);
//设置分割符,单词之间用逗号
mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
是不是很简单呢