自动完成文本框从EditText派生而出,实际上也就是个文本框但是当用户输入一定字符之后,会显示一个菜单供用户选择,选完后自动填写。
android:completionHint:设置下拉菜单中的提示标题
android:completionHintView:定义提示视图中显示下拉菜单
android:completionThreshold:指定用户至少输入多少个字符才会显示提示
android:dropDownAnchor:设置下拉菜单的定位"锚点"组件,如果没有指定改属性, 将使用该TextView作为定位"锚点"组件
android:dropDownHeight:设置下拉菜单的高度
android:dropDownWidth:设置下拉菜单的宽度
android:dropDownHorizontalOffset:指定下拉菜单与文本之间的水平间距
android:dropDownVerticalOffset:指定下拉菜单与文本之间的竖直间距
android:dropDownSelector:设置下拉菜单点击效果
android:popupBackground:设置下拉菜单的背景
使用AutoComplete TextView很简单,只需要为他设置一个adapter即可,该adapter封装了AutoComplete TextView预设的提示文本
AutoCompleteTextView还派生一个MultiAtuoCompleteTextView,该子类的功能与AutoCompleteTextView基本相似,只是MultiAtuoCompleteTextView允许输入多个提示项,多个提示项以分隔符分隔,MultiAtuoCompleteTextView提供setTokenizer()方法设置分隔符。
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
//定义一个自动完成文本框,指定输入一个字符后提示
<AutoCompleteTextView
android:id="@+id/auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="请选择你喜欢的图书"
android:dropDownHorizontalOffset="10dp"
android:completionThreshold="1"/>
//定义一个组件
<MultiAutoCompleteTextView
android:id="@+id/mauto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"/>
</LinearLayout>
下面他们绑定同一个adapter所以提示内容一样
activity代码:
package com.example.myapplication;
import android.util.Log;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.SimpleAdapter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private String[] books=new String[]{"疯狂Java讲义","疯狂前端开发","疯狂xml讲义","疯狂workflow讲义"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建一个Arrayadapter,封装数组
ArrayAdapter adapter1=new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,books);
//android.R.layout.simple_dropdown_item_1line 默认的下拉条目样式
AutoCompleteTextView actv=findViewById(R.id.auto);
//设置adapter
actv.setAdapter(adapter1);
MultiAutoCompleteTextView mauto=findViewById(R.id.mauto);
mauto.setAdapter(adapter1);
//为MultiAutoCompleteTextView设置分隔符
mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
}
最后效果图
那个,。。。。额,由于虚拟机不知道什么原因输入不了文字,所以下载apk然后用手机截的图,有点大哈。