Android 自学之自动完成文本框 AutoCompleteTextView

时间:2021-05-30 22:41:30

自动完成文本框(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 }

效果图

Android 自学之自动完成文本框 AutoCompleteTextView