经常看到EditText有自动提示功能,这个功能用处不大,但是用户体验不错。那么,Android要怎么实现的呢?
实现此功能的是EditText的子类控件AutoCompleteTextView。既是子类,所以有着全部父类的属性,即用法与EditText相同。(MultiAutoCompleteTextView这个的属性更加强大,可以输入多个,类似发短信时选择多个联系人)。
但Edittext也有一个缺点,那就是必须输入2个字符后才会提示。
布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单个城市:"
android:textSize="20dp" />
<AutoCompleteTextView
android:id="@+id/oneCity"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="多个城市:"
android:textSize="20dp" />
<MultiAutoCompleteTextView
android:id="@+id/manyCity"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
java文件:
autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.oneCity);
multiAutoCompleteTextView = (MultiAutoCompleteTextView)findViewById(R.id.manyCity);
adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_dropdown_item_1line,list);
autoCompleteTextView.setAdapter(adapter);
multiAutoCompleteTextView.setAdapter(adapter);
效果图: