自動完成文本框(AutoCompleteTextView)從EditText派生而出,功能:當用戶輸入一定字符以後,自動完成文本框會顯示一個下拉菜單,供用戶選擇。
使用AutoCompleteTextView,要爲它設置一個Adapter,該Adapter封裝了AutoCompleteTextView預設的提示文本。
AutoCompleteTextView還派生了一個子類:MultiAutoCompleteTextView。區別:MultiAutoCompleteTextView允許輸入多個提示項,多個提示項以分隔符分隔。用setTokenizer方法來設置分隔符。
AutoCompleteTextView與MultiAutoCompleteTextView的區別:
AutoCompleteTextView:
支持基本的自動完成功能,適用在各種搜索功能中,並且可以根據自己的需求設置他的默認顯示數據。
MultiAutoCompleteTextView:
該控件可支持選擇多個值(在多次輸入的情況下),分別用分隔符分開,並且在每個值選中的時候再次輸入值時會自動去匹配。可用在發短信,發郵件時選擇聯繫人這種類型當中。使用時需要執行設置分隔符方法。
java示例代碼:
public class MainActivity extends Activity
{
AutoCompleteTextView actv;
MultiAutoCompleteTextView mauto;
// 定義字符串數組,作爲提示的文本
String[] books = new String[]{
"變形金剛I",
"變形金剛II",
"X戰警I",
"X戰警II",
"侏羅紀公園",
"侏羅紀世界",
"金瓶梅I",
"金瓶梅II"
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 創建一個ArrayAdapter,封裝數組
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, books);
actv = (AutoCompleteTextView)findViewById(R.id.auto);
// 設置Adapter
actv.setAdapter(aa);
mauto = (MultiAutoCompleteTextView)findViewById(R.id.mauto);
// 設置Adapter
mauto.setAdapter(aa);
// 爲MultiAutoCompleteTextView設置分隔符
mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
}
佈局xml示例代碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 定義一個自動完成文本框
,指定輸入一個字符後進行提示 -->
<AutoCompleteTextView
android:id="@+id/auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionHint="請選擇您喜歡的電影:"
android:dropDownHorizontalOffset="10dp"
android:completionThreshold="2"/> <!-- 輸入2個字符會自動顯示 -->
<!-- 定義一個MultiAutoCompleteTextView組件 -->
<MultiAutoCompleteTextView
android:id="@+id/mauto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"/> <!-- 輸入1個字符會自動顯示 -->
</LinearLayout>
顯示效果: