其实android有自带的自动提示输入框(类似百度搜索时自动弹出一些提示,如下图),不需要我们自己去实现的。




Android 输入框输入完成后 android的输入框_Android 输入框输入完成后


在android里有两种自动提示输入框,分别是AutoCompleteTextView和MultiAutoCompleteTextView

那么它们有什么区别呢?嘿嘿,先来运行下下面的例子,你就明白了

布局文件


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <MultiAutoCompleteTextView
        android:id="@+id/multiAutoCompleteTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>



实现代码


package com.example.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 static final String[] city=new String[]  
			{"孙悟空", "孙悟饭", "孙悟天", "贝吉塔","短笛大魔王", "界王神", "悟天克斯", "特兰克斯","特兰验证","唐僧"};

	//声明AutoCompleteTextView、MultiAutoCompleteTextView对象  
	private AutoCompleteTextView autoCompleteTextView=null;  
	private MultiAutoCompleteTextView multiAutoCompleteTextView=null;  

	@Override  
	public void onCreate(Bundle savedInstanceState) {  
		super.onCreate(savedInstanceState);  
		setContentView(R.layout.activity_main);  

		//获取AutoCompleteTextView、MultiAutoCompleteTextView对象  
		autoCompleteTextView=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);  
		multiAutoCompleteTextView=(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);  

		//创建适配器  
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(  
				this,   
				android.R.layout.simple_dropdown_item_1line,  
				city);  

		//初始化autoCompleteTextView  
		autoCompleteTextView.setAdapter(adapter);  
		//设置输入多少字符后提示,默认值为2,在此设为1  
		autoCompleteTextView.setThreshold(2);  

		//初始化multiAutoCompleteTextView  
		multiAutoCompleteTextView.setAdapter(adapter);  
		multiAutoCompleteTextView.setThreshold(1);  
		//用户必须提供一个MultiAutoCompleteTextView.Tokenizer用来区分不同的子串。  
		multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());  
	}  
}

拷贝运行后,你会发现,AutoCompleteTextView提示框选择一次提示后就不能再选择了,而MultiAutoCompleteTextView可以进行多次选择。



AutoCompleteTextView常用属性

android:completionHint

                                   设置出现在下拉菜单中的提示标题

android:completionThreshold

                        设置用户至少输入多少个字符才会显示提示

android:dropDownHorizontalOffset

               下拉菜单于文本框之间的水平偏移。默认与文本框左对齐

android:dropDownHeight

                                下拉菜单的高度

android:dropDownWidth

                                  下拉菜单的宽度

android:singleLine

                                            单行 显示

android:dropDownVerticalOffset

                    垂直偏移量




AutoCompleteTextView的一些重要方法

clearListSelection():清除选中的列表项


dismissDropDown():如果存在关闭下拉菜单


getAdapter():获取适配器





MultiAutoCompleteTextView的一些重要方法


此方法并不是检验什么时候文本的总长度超过了预定的值,而是在仅当从函数 findTokenStart ()到 getSelectionEnd() 函数得到的文本长度为 0 或者超过了预定值的时候才起作用。)
performValidation(): 此子类方法并不是用来确定整个文本的有效性,而是用来确定文本中的单个符号的有效性。空标记将被移除。
setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用户正在输入时,tokenizer设置将用于确定文本相关范围内