AutoCompleteTextView和EditText一样都可以输入文本。但它可以和适配器绑定,当用户输入两个及以上字符时,系统将根据适配器提供的内容,进行文本的自动匹配提示。这个Web开发中Ajax里的一个标志性的功能,现在被Android弄成了一个标准组件。下面我们通过一个例子来学习一下:
1、建一个新的项目,打开res/values/strings.xml文件,写入如下代码:
01 | < ? xml version = "1.0" encoding = "utf-8" ?> |
02 | < RESOURCES > |
03 | < STRING name = "app_name" >HelloAutoCompleteTextView</ STRING > |
04 | < STRING name = "province" -array> |
05 | < ITEM >shan dong</ ITEM > |
06 | < ITEM >jiang su</ ITEM > |
07 | < ITEM >an hui</ ITEM > |
08 | < ITEM >zhe jiang</ ITEM > |
09 | < ITEM >fu jian</ ITEM > |
10 | < ITEM >shang hai</ ITEM > |
11 | < ITEM >guang dong</ ITEM > |
12 | < ITEM >guang xi</ ITEM > |
13 | < ITEM >hai nan</ ITEM > |
14 | < ITEM >hu bei</ ITEM > |
15 | < ITEM >hu nan</ ITEM > |
16 | < ITEM >he nan</ ITEM > |
17 | < ITEM >jiang xi</ ITEM > |
18 | < ITEM >bei jing</ ITEM > |
19 | < ITEM >tian jin</ ITEM > |
20 | < ITEM >he bei</ ITEM > |
21 | < ITEM >shan xi</ ITEM > |
22 | < ITEM >nei meng gu</ ITEM > |
23 | < ITEM >ning xia</ ITEM > |
24 | < ITEM >xin jiang</ ITEM > |
25 | < ITEM >qing hai</ ITEM > |
26 | < ITEM >shan xi</ ITEM > |
27 | < ITEM >gan su</ ITEM > |
28 | < ITEM >si chuan</ ITEM > |
29 | < ITEM >yun nan</ ITEM > |
30 | < ITEM >gui zhou</ ITEM > |
31 | < ITEM >xi zang</ ITEM > |
32 | < ITEM >chong qing</ ITEM > |
33 | < ITEM >liao ning</ ITEM > |
34 | < ITEM >ji lin</ ITEM > |
35 | < ITEM >hei long jiang</ ITEM > |
36 | < ITEM >tai wan</ ITEM > |
37 | < ITEM >xiang guang</ ITEM > |
38 | < ITEM >ao men </ ITEM > |
39 | < ITEM >山东</ ITEM > |
40 | < ITEM >江苏</ ITEM > |
41 | < ITEM >安徽</ ITEM > |
42 | < ITEM >浙江</ ITEM > |
43 | < ITEM >福建</ ITEM > |
44 | < ITEM >上海</ ITEM > |
45 | < ITEM >广东</ ITEM > |
46 | < ITEM >广西</ ITEM > |
47 | < ITEM >海南</ ITEM > |
48 | < ITEM >湖北</ ITEM > |
49 | < ITEM >湖南</ ITEM > |
50 | < ITEM >河南</ ITEM > |
51 | < ITEM >江西</ ITEM > |
52 | < ITEM >北京</ ITEM > |
53 | < ITEM >天津</ ITEM > |
54 | < ITEM >河北</ ITEM > |
55 | < ITEM >山西</ ITEM > |
56 | < ITEM >内蒙古</ ITEM > |
57 | < ITEM >宁夏</ ITEM > |
58 | < ITEM >新疆</ ITEM > |
59 | < ITEM >青海</ ITEM > |
60 | < ITEM >陕西</ ITEM > |
61 | < ITEM >甘肃</ ITEM > |
62 | < ITEM >四川</ ITEM > |
63 | < ITEM >云南</ ITEM > |
64 | < ITEM >贵州</ ITEM > |
65 | < ITEM >西藏</ ITEM > |
66 | < ITEM >重庆</ ITEM > |
67 | < ITEM >辽宁</ ITEM > |
68 | < ITEM >吉林</ ITEM > |
69 | < ITEM >黑龙江</ ITEM > |
70 | < ITEM >台湾</ ITEM > |
71 | < ITEM >香港</ ITEM > |
72 | < ITEM >澳门</ ITEM > |
73 | </ STRING > |
74 | </ RESOURCES > |
2、打开res/layout/main.xml 写入如下内容:
1 | < ? xml version = "1.0" encoding = "utf-8" ?> |
2 | < LINEARLAYOUT android:layout_height = "fill_parent" android:layout_width = "fill_parent" android:orientation = "vertical" xmlns:android = "http://schemas.android.com/apk/res/android" > |
3 | < TEXTVIEW android:layout_height = "wrap_content" android:layout_width = "fill_parent" android:text = "省份:" /> |
4 | |
5 | < AUTOCOMPLETETEXTVIEW android:layout_height = "wrap_content" android:layout_width = "fill_parent" android:id = "@+id/AutoCompleteTextView01" android:completionThreshold = "1" android:hint = "请输入省份" > |
6 | </ AUTOCOMPLETETEXTVIEW > |
7 | </ LINEARLAYOUT > |
3、打开MainHelloAutoCompleteTextView.java 写入下内容:
01 | package android.basic.lesson10; |
02 | |
03 | import android.app.Activity; |
04 | import android.os.Bundle; |
05 | import android.widget.ArrayAdapter; |
06 | import android.widget.AutoCompleteTextView; |
07 | |
08 | public class MainHelloAutoCompleteTextView extends Activity { |
09 | /** Called when the activity is first created. */ |
10 | @Override |
11 | public void onCreate(Bundle savedInstanceState) { |
12 | super .onCreate(savedInstanceState); |
13 | setContentView(R.layout.main); |
14 | |
15 | //定义数组 |
16 | String[] province = getResources().getStringArray(R.array.province); |
17 | |
18 | //定义数组适配器 |
19 | ArrayAdapter adapter = new ArrayAdapter( this , R.layout.list_item, province); |
20 | |
21 | //找到自动完成组件 |
22 | AutoCompleteTextView atv = (AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView01); |
23 | |
24 | //为其设置适配器 |
25 | atv.setAdapter(adapter); |
26 | |
27 | } |
28 | } |
4、运行程序,在英文输入法下输入”h”看看效果,再切换到中文输入法下输入”河”看看效果:
这里留意一下,android:completionThreshold=”1″ 属性设置了一个阀值,规定用户打了多少字符之后才出现自动提示,默认值是2,我们在这里改成了1。