AutoCompleteTextView的类层结构:

java.lang.Object
android.view.View
android.widget.TextView
android.widget.EditText
android.widget.AutoCompleteTextView

AutoCompleteTextView是一种根据用户输入来给出提示信息的文本编辑框控件,当用户编辑时,控件会根据用户的输入将一些建议以下拉列表的形式在控件下方显示,当用户选择其中一项时,就会用选项的内容自动替换编辑框内的内容。

AutoCompleteTextView的使用方法:

1、在资源文件中建立一个xml文件,用来定义提示信息每项的layout,这里命名为list_item.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:textSize="16sp" android:textColor="#000"> </TextView>

2、在布局文件中声明一个AutoCompleteTextView,如下:

<?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" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Country" /> <AutoCompleteTextView android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp"/> </LinearLayout>

3、activity文件如下:

public class HelloAutoComplete extends Activity { private AutoCompleteTextView textView = null; private ArrayAdapter<String> adapter = null; //所有的建议信息: static final String[] COUNTRIES = new String[] { "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi", //只写了一部分 "Yemen", "Yugoslavia", "Zambia", "Zimbabwe" }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); //将一个字符串数组COUNTRIES与ArrayAdapter绑定,并设置它的每一项的布局是 R.layout.list_item adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES); textView.setAdapter(adapter); } }

在activity中定义了一个字符串数组COUNTRIES来存放所有的建议信息,并实例化了一个ArrayAdapter对象将list_item.xml文件定义的布局与COUNTRIES字符串数组中的每项绑定在一起。

运行效果如下:

但是!!将建议信息的字符串写死在代码中不是一种好的编程方式,我们应该将其定义在一个资源文件中,如定义一个suggestions.xml存放 COUNTRIES字符串数组中的建议信息:

<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="countries_array"> <item>Bahrain</item> <item>Bangladesh</item> <item>Barbados</item> <item>Belarus</item> <item>Belgium</item> <item>Belize</item> <item>Benin</item> </string-array> </resources>

然后在activity中加载资源:

public class HelloAutoComplete extends Activity { private AutoCompleteTextView textView = null; private ArrayAdapter<String> adapter = null; private String[] countries = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); //从资源文件中获得字符串数组: countries = getResources().getStringArray(R.array.countries_array); //将一个字符串数组COUNTRIES与ArrayAdapter绑定,并设置它的每一项的布局是 R.layout.list_item adapter = new ArrayAdapter<String>(this, R.layout.list_item, countries); textView.setAdapter(adapter); } }

同样可达到上图的效果。

更多相关文章

  1. Android内核驱动开发中的Kconfig文件结构分析(图文)
  2. Android震动和播放资源文件中的声音文件
  3. Android文件管理器开发对各类文件的打开以及处理
  4. xml文件
  5. android 计算字符串长度,高度
  6. android sdcard存储方案(基于fuse文件系统):之一
  7. android读取data/data/包名/file路径下的txt文件
  8. 文件多线程下载实现

随机推荐

  1. 做Android的感想
  2. android 仿微信demo————微信通讯录界
  3. android:layout_gravity 和 android:grav
  4. Android:res之selector背景选择器
  5. android layout attribute
  6. android:layout_gravity和android:gravit
  7. android 圆角编写(懒得去找,写给自己看的)
  8. android系统定制从听说到入门四
  9. android:inputType参数类型说明
  10. Android的系统体系结构