自动完成文本框(AutoCompleteTextView)从EditText派生而出,实际上他也是一个编辑框,但他比普通的编辑框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择了某个菜单项过后,AutoCompleteTextView就会按用户选择自动填写该文本框。
AutoCompleteTextView支持的常用的XML属性和相关方法及说明
XML属性 | 相关方法 | 说明 |
android:completionHint | setCompletionHint(CharSequence) | 设置出现在下拉菜单中的提示标题 |
android:completionThreshold | setThreshold(int) | 设置用户至少输入几个字福才会显示提示 |
android:dropDownHeight | setDropDownHeight(int) | 设置下拉菜单的高度 |
android:dropDownHorizontalOffset | 设置下拉菜单与文本框之间的水平偏移,下拉菜单默认与文本框左对齐 | |
android:dropDownVerticalOffset | 设置下拉菜单与文本框之间的垂直偏移,下拉菜单默认紧跟文本框 | |
android:dropDownWidth | setdropDownWidth(int) | 设置下拉菜单的宽度 |
android:popupBackground | setDropDownBackgroundResource(int) | 设置下拉菜单的背景 |
AutoCompleteTextView的使用其实很简单,只要为他设置一个Adapter,该Adapter封装了AutoCompleteTextView的预设提示文本,下面例举一个界面布局文件中包含了AutoCompleteTextView。
layout/main.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <!-- 定义一个自动完成文本框,指定输入一个字符后进行提示 --> 8 <AutoCompleteTextView 9 android:id="@+id/auto" 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" 12 android:completionHint="请选择您喜欢的人:" 13 android:dropDownHorizontalOffset="20dp" 14 android:completionThreshold="1" 15 /> 16 </LinearLayout>
com.example.autocomplete.AutoCompleteTextViewTest.java
1 package com.example.autocomplete; 2 3 import android.support.v7.app.ActionBarActivity; 4 import android.support.v7.app.ActionBar; 5 import android.support.v4.app.Fragment; 6 import android.os.Bundle; 7 import android.view.LayoutInflater; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.View; 11 import android.view.ViewGroup; 12 import android.widget.ArrayAdapter; 13 import android.widget.AutoCompleteTextView; 14 import android.os.Build; 15 16 public class AutoCompleteTextViewTest extends ActionBarActivity { 17 18 //定义字符串数组,作为提示的文本 19 String[] books = new String[]{ 20 "yangjing", 21 "yangsen", 22 "yanghua", 23 }; 24 25 @Override 26 protected void onCreate(Bundle savedInstanceState) { 27 super.onCreate(savedInstanceState); 28 setContentView(R.layout.main); 29 //创建一个ArrayAdapter,封装数组 30 ArrayAdapter<String> arr = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, books); 31 32 AutoCompleteTextView auto = (AutoCompleteTextView) findViewById(R.id.auto); 33 34 auto.setAdapter(arr); 35 } 36 }
效果图