首页 > 代码库 > Android开发系列(二十):AutoCompleteTextView(自动完成文本框)的功能和用法

Android开发系列(二十):AutoCompleteTextView(自动完成文本框)的功能和用法

当用户输入一定的字符之后,自动完成文本框能够显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView可以按照用户的选择自动填写该文本框

AutoCompleteTextView是从EditText派生而出,比普通编辑框多了一个功能:输入一定字符后,自动完成文本。

下边我们看下它的属性:

android:completionHint:设置下拉菜单中的提示标题

android:completionHintView:设置下拉菜单中提示标题的视图

android:dropDownHeight:设置下拉菜单的高度

android:dropDownHorizontalOffset:设置下拉菜单与文本框之间的水平便宜,下拉菜单默认与文本框左对齐

android:dropDownVerticalOffset:设置下拉菜单与文本框之间的垂直偏移,下拉菜单默认与文本框左对齐

android:dropDownWidth:设置下拉菜单的宽度

android:popupleBackground:设置下拉菜单的背景


另外,AutonCompleteTextView派生了一个子类:MultiAutoCompleteTextView,该子类允许输入多个提示项,每个提示项之间用分隔符分割。

MultiAutoCompleteTextView提供setTokenizer()方法设置分隔符。


我们首先,新建一个Android项目,然后就可以编写main.xml文件:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<!-- 定义一个自动完成文本框,指定输入一个字符后进行提示 -->
<AutoCompleteTextView  
	android:hint="请填写您的邮箱地址"
	android:id="@+id/auto"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:dropDownHorizontalOffset="0dp"
	android:completionThreshold="1"/>
<!-- 定义一个MultiAutoCompleteTextView组件 -->
<MultiAutoCompleteTextView
    android:id="@+id/mauto"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:completionThreshold="1"
	/>
</LinearLayout>
</span>
然后,我们编写java代码,AutoCompleteTextViewTest.java:

<span style="font-size:14px;">package org.crazyit.ui;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.MultiAutoCompleteTextView;
import android.widget.TextView;

public class AutoCompleteTextViewTest extends Activity
{
	AutoCompleteTextView actv;
	MultiAutoCompleteTextView mauto;
	// 定义字符串数组,作为提示的文本
	String[] books = new String[]{
		"Big_AdamApple@qq.com",
		"Big_AdamApple@baidu.com",
		"Big_AdamApple@gmail.com",
		"Big_AdamApple@sina.com",
		"Big_AdamApple@163.com",
		"Big_AdamApple@mail.com",
		"Big_AdamApple@11.com",
	};
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 创建一个ArrayAdapter,封装数组
		ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
			android.R.layout.simple_dropdown_item_1line, books);
		actv = (AutoCompleteTextView)findViewById(R.id.auto);
		// 设置Adapter
		actv.setAdapter(aa);
		mauto = (MultiAutoCompleteTextView)findViewById(R.id.mauto);
		// 设置Adapter
		mauto.setAdapter(aa);
		// 为MultiAutoCompleteTextView设置分隔符
		mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
	}
}</span>

效果图如下:



Android开发系列(二十):AutoCompleteTextView(自动完成文本框)的功能和用法