天天看點

android之填寫文本自動補充AutoCompleteTextView和MultiAutoCompleteTextView

首先,我們得明确一點,雖然我們要用到的控件名稱為***TextView,但是它卻是可編輯的,這裡可一定不要掉入陷阱哦。

      當我們填寫文本框的時候,是不是很希望下面可以彈出來一個下拉框提示我們呢?如果你的答案為yes,那麼你肯定很希望知道AutoCompleteTextView和MultiAutoCompleteTextView.兩者都位于android:widget包下。實際上,兩者功能很相似,MultiAutoCompleteTextView就是從AutoCompleteTextView繼承而來的。

兩者的差別很簡單:

       AutoCompleteTextView不支援連續提示

       MultiAutoCompleteTextView支援連續提示

何謂連續提示呢?

       例如我們打入了兩個字,這時候會出來個下拉框提示,我們點選下拉框中的某項,然後文本框中存在内容了。這時候,我們再次繼續輸入東西的時候,AutoCompleteTextView則不會再次提示了,而MultiAutoCompleteTextView仍舊會提示,并且會将不同的内容之間以分隔符隔開(具體使用什麼分隔符,我們可以通過tokenizer進行設定)

  有圖為證:

android之填寫文本自動補充AutoCompleteTextView和MultiAutoCompleteTextView

第一個為AutoCompleteTextView,第二個為MultiAutoCompleteTextView。

實作的代碼如下:

activity代碼:

package cn.com.chenzheng_java;

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.MultiAutoCompleteTextView;

public class AutoComplateTextActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.autocomplatetextview);

AutoCompleteTextView t = (AutoCompleteTextView)findViewById(R.id.autoText);

String[] auto={"aaa","bcde","cderef","aagdgfdgf","aaffff"};

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, auto) ;

t.setAdapter(adapter);

MultiAutoCompleteTextView multiAutoCompleteTextView = (MultiAutoCompleteTextView)findViewById(R.id.autoText2);

multiAutoCompleteTextView.setAdapter(adapter);

multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

}

}

布局檔案代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:orientation="vertical"

android:layout_height="fill_parent">

<AutoCompleteTextView

android:id="@+id/autoText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="hello kitty!"

></AutoCompleteTextView>

<MultiAutoCompleteTextView

android:id="@+id/autoText2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="hello kitty!"

></MultiAutoCompleteTextView>

</LinearLayout>

--------------------------------------------------------------------------------

其他介紹:

completionThreshold:它的值決定了你在AutoCompleteTextView至少輸入幾個字元,它才會具有自動提示的功能。另,預設最多提示20條。

  dropDownAnchor:它的值是一個View的ID,指定後,AutoCompleteTextView會在這個View下彈出自動提示。

  dropDownSelector:應該是設定自動提示的背景色之類的,沒有嘗試過,有待進一步考證。

  dropDownWidth:設定自動提示清單的寬度。