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[]{ "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", }; @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>
效果图如下:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。