其实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的一些重要方法
enoughToFilter():当文本长度超过阈值时过滤
(
此方法并不是检验什么时候文本的总长度超过了预定的值,而是在仅当从函数
findTokenStart
()到
getSelectionEnd()
函数得到的文本长度为
0
或者超过了预定值的时候才起作用。)
performValidation(): 此子类方法并不是用来确定整个文本的有效性,而是用来确定文本中的单个符号的有效性。空标记将被移除。
setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用户正在输入时,tokenizer设置将用于确定文本相关范围内
performValidation(): 此子类方法并不是用来确定整个文本的有效性,而是用来确定文本中的单个符号的有效性。空标记将被移除。
setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用户正在输入时,tokenizer设置将用于确定文本相关范围内
哎,这些重要方法和属性也是笔者网上查的,描述的真是让人醉了。。。。详见
http://www.cnblogs.com/over140/archive/2010/10/29/1864133.html