【12】AutoCompleteTextView——自动完成文本框

来源:互联网 发布:长波电台事件 知乎 编辑:程序博客网 时间:2024/05/16 08:48
       如果你像为用户提供建议类型,您可以使用EditText的子类称为AutoCompleteTextView。为了实现自动完成,您必须指定一个(@link android:widget.Adapter)提供建议的文本。有几个可用的适配器,根据数据来自哪里,如从数据库或一个数组。

相关属性:
android:completionHint:设置下拉菜单中的提示标题
android:completionHintView:定义提示视图中显示下拉菜单
android:completionThreshold:指定用户至少输入多少个字符才会显示提示
android:dropDownAnchor:设置下拉菜单的定位”锚点”组件,如果没有指定改属性, 将使用该TextView作为定位”锚点”组件
android:dropDownHeight:设置下拉菜单的高度
android:dropDownWidth:设置下拉菜单的宽度
android:dropDownHorizontalOffset:指定下拉菜单与文本之间的水平间距
android:dropDownVerticalOffset:指定下拉菜单与文本之间的竖直间距
android:dropDownSelector:设置下拉菜单点击效果
android:popupBackground:设置下拉菜单的背景

       其实还有个MultiAutoCompleteTextView(多提示项的自动完成文本框) 和这个AutoCompleteTextView作用差不多,属性也一样,具体区别在哪里, 我们在下面的代码中来体验。另外这两个都是全词匹配的,比如,小情绪: 你输入小->会提示小情绪,但是输入情绪->却不会提示小情绪!

下面是一个简单的例子:
运行效果如下:


实现代码:
package com.example.practice;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;import android.widget.MultiAutoCompleteTextView;public class MainActivity_AutoCompleteTextView extends AppCompatActivity {    private AutoCompleteTextView autoCompleteTextView;    private MultiAutoCompleteTextView multiAutoCompleteTextView;    private static final String[] data = new String[]{"xjj", "xzz", "xgg", "xmm", "xqw", "xtz", "xxx", "xmn", "xlh"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main_auto_complete_text_view);        autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);        ArrayAdapter adapter = ArrayAdapter.createFromResource(this,                R.array.city_name, android.R.layout.simple_dropdown_item_1line);        autoCompleteTextView.setAdapter(adapter);        multiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView);        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,                android.R.layout.simple_spinner_dropdown_item, data);        multiAutoCompleteTextView.setAdapter(adapter1);        //为multiAutoCompleteTextView设置分隔符(就是每两个词语之间用逗号隔开)        multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());    }}

布局文件:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.practice.MainActivity_AutoCompleteTextView">    <AutoCompleteTextView        android:id="@+id/autoCompleteTextView"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:completionThreshold="1"        android:hint="请用拼音输入城市的名称" />    <MultiAutoCompleteTextView        android:id="@+id/multiAutoCompleteTextView"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_below="@+id/autoCompleteTextView"        android:completionThreshold="1" /></RelativeLayout>


0 0