我們在查航班信息時,或者在百度、Google搜索時,當你在搜索框裡輸入一些字符時,會自動彈出一個下拉框提示類似的結果。在Android中提供了兩種智能輸入框,它們是AutoCompleteTextView、MultiAutoCompleteTextView。
AutoCompleteTextView、MultiAutoCompleteTextView二者區別是前者選擇一個,後者可以選擇多個。
一、布局文件
打開activity_main.xml文件。
輸入以下代碼:
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <AutoCompleteTextView android:id="@+id/single"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
-
- <MultiAutoCompleteTextView android:id="@+id/multi"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"/>
-
- </LinearLayout>
二、程序文件
打開“src/com.genwoxue.autocompletetextview/MainActivity.java”文件。
然後輸入以下代碼:
[java] view plain copy
- package com.example.autocompletetextview;
-
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ArrayAdapter;
- import android.widget.AutoCompleteTextView;
- import android.widget.MultiAutoCompleteTextView;
-
- public class MainActivity extends Activity {
-
- //初始化城市列表
- private static final String[] city=new String[]
- {"烏魯木齊市", "北京市", "鄭州市", "上海市","天津市", "深圳市", "廣州市", "南京市","大連市","大同市"};
-
- //聲明AutoCompleteTextView、MultiAutoCompleteTextView對象
- private AutoCompleteTextView single=null;
- private MultiAutoCompleteTextView multi=null;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- //獲取AutoCompleteTextView、MultiAutoCompleteTextView對象
- single=(AutoCompleteTextView)findViewById(R.id.single);
- multi=(MultiAutoCompleteTextView)findViewById(R.id.multi);
-
- //創建適配器
- ArrayAdapter<String> adapter=new ArrayAdapter<String>(
- this,
- android.R.layout.simple_dropdown_item_1line,
- city);
-
- //初始化single
- single.setAdapter(adapter);
- //設置輸入多少字符後提示,默認值為2,在此設為1
- single.setThreshold(1);
-
- //初始化multi
- multi.setAdapter(adapter);
- multi.setThreshold(1);
- //用戶必須提供一個MultiAutoCompleteTextView.Tokenizer用來區分不同的子串。
- multi.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
- }
- }
說明:
(1)AutoCompleteTextView常見方法
clearListSelection():清除選中的列表項;
dismissDropDown():如果存在關閉下拉菜單;
getAdapter():獲取適配器。
(2)MultiAutoCompleteTextView常見方法
enoughToFilter():當文本長度超過阈值時過濾;
performValidation():代替驗證整個文本,這個子類方法驗證每個單獨的文字標記;
setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用戶正在輸入時,tokenizer設置將用於確定文本相關范圍內。
三、運行結果