AutoCompleteTextView和MultiAutoCompleteTextView
1.AutoCompleteTextView是一个文本编辑框,但当用户输入一定字符后,它能自动匹配用户输入的字符,弹出一个下拉菜单,用户通过选择某个菜单项后,自动填写该文本框。
AutoCompleteTexView有以下几种常用属性和方法
XML属性 | 相关方法 | 说明 |
android:completionHint | setCompletionHint(CharSequence) | 设置下拉菜单中的提示标题 |
android:completionThreshold | setThreshold(int) | 设置用户至少输入几个字符才会显示提示 |
android:dropDownHeight | setDropDownHeight(int) | 设置下拉菜单的高度 |
android:popupBackground | setDropBackgroundResource(int) | 设置下拉菜单的背景 |
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv"
/>
<AutoCompleteTextView
android:id="@+id/ac"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Activity代码:
package com.example.autocomplete;
import android.app.Activity;
import android.os.Bundle;
import android.text.StaticLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
AutoCompleteTextView autoCompleteTextView;
static final String[] COUNTRIES = new String[] {
"America","Australia","Canada","China"
,"Japan","Russia"};;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.ac);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_dropdown_item_1line,COUNTRIES);
autoCompleteTextView.setAdapter(adapter);
}
}
2.MultiAutoCompleteTextView是AutoCompleteTextView派生的一个子类,允许用户输入多个提示项,多个提示项以分割符分割(特意提供了setTokenizer()方法来设置分割符)。
代码同上,只是将布局文件和Activity中的AutoCompleteTextView改为MultiAutoCompleteTextView即可,同时增加multiautoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer())即可。