AutoCompleteTextView有点类似于EditText和Spinner的混合体。当用户在输入时,如果应用程序的文本输入框中使用了自动完成控件,预输入文本被看作是一个前缀过滤器,与用户当前输入的文本进行前缀比较后,以下拉列表的形式显示候选文本。与Spanner类似,候选文本显示在输入区域下方。用户可以手动输入所有文本(例如当列表中没有候选词时),或者从下拉列表中选择合适的值。 AutoCompleteTextView是EditText的子类,所以你可以对它的对象进行诸如外观/字体/颜色等属性值的设置。另外,AutoCompleteTextView有一个名为Android:completionThreshold的属性值,用来说明前缀过滤器启动时,用户至少输入的字符个数。 你可以通过setAdapter()来给AutoCompleteTextView添加一个包含候选值列表的适配器(adapter)。然而,由于用户可以输入一些不在候选值列表的数据,AutoCompleteTextView不支持selection listener。
AutoCompleteTextView(相对EditText独有)常用属性:
android:completionHint 下拉列表下面的说明性文字
android:completionThreshold 弹出下来列表的最小字符个数
android:dropDownAnchor 下拉列表的锚点或挂载点
android:dropDownHeight 下拉列表高度
android:dropDownWidth 下拉列表宽度
android:dropDownHorizontalOffset 下拉列表距离左边的距离
android:dropDownSelector 下拉列表被选中的行的背景
效果图:
XMl文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.myapplication.MainActivity"
tools:showIn="@layout/app_bar_main">
<AutoCompleteTextView
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="40dp"
android:textColorHint="@android:color/darker_gray"
android:hint="请输入要发送的消息"
android:completionThreshold="1"
android:dropDownHeight="100dp"
android:dropDownWidth="wrap_content"
android:dropDownSelector="#FF4081"
/>
</RelativeLayout>
activity中相关代码:
private static final String[] AutoTextViewInf = new String[]{"Android应用","Android手机","Android操作系统","热门电影推荐","中国好声音"};//存放提示信息的数组
private AutoCompleteTextView autoCompleteTextView;//声明AutoCompleteTextView对象
在构造方法中添加如下代码:
//创建ArrayAdapter对象
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,AutoTextViewInf);
//参数一:上下文
//参数二:提示信息显示方式,(下拉列表进行显示)
//参数三:提示信息数组
//找到布局文件里面的autoCompleteTextView
autoCompleteTextView=(AutoCompleteTextView)findViewById(R.id.input);
//为autoCompleteTextView设置数据源
autoCompleteTextView.setAdapter(arrayAdapter);