在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)显示效果:

初始效果:

Android中的AutoCompleteTextView与MultiAutoCompleteTextView的使用_google

输入中国:

Android中的AutoCompleteTextView与MultiAutoCompleteTextView的使用_Android_02

输入Si:

Android中的AutoCompleteTextView与MultiAutoCompleteTextView的使用_google_03

输入陈晓:

Android中的AutoCompleteTextView与MultiAutoCompleteTextView的使用_google_04