介绍
在百度上面进行关键词搜索的时候,输入需要搜索的关键字就会显示一个下拉列表,列表中会匹配到用户输入的关键词汇,效果如图 5.1 所示。Android 也为开发者提供了一个这样的组件,那就是 AutoCompleteTextView 组件也叫做动完成文本框。AutoCompleteTextView 是 EditText 的子类,从外表上看它就是一个普通的编辑框组件,其实它内在的功能就是在用户输入一定的字符时,该组
件会显示一个下拉列表。在这个列表中用户单击需要的字符,该字符将自动填写在编辑框当中。
基本语法:
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
XML属性
XML属性 | 描述 |
android:completionHint | 设置下拉菜单中显示的提示 |
android:completionHintView | 设置下拉菜单中显示的提示视图 |
android:completionThreshold | 设置用户至少输入几个字符才显示提示列表 |
android:dropDownAnchor | 设置提示列表显示在某个组件的下面,值为某组件的 id |
android:dropDownHeight | 设置下拉列表的高度 |
android:dropDownHorizontalOffset | 设置下拉列表与文本框之间的水平偏移,下拉菜单默认与文本框左对齐 |
android:dropDownSelector | 设置下拉列表选择器的背景 |
android:dropDownVerticalOffset | 设置下拉列表与文本框之间的垂直偏移,下拉菜单默认在文本框下面 |
android:dropDownWidth | 设置下拉列表的宽度 |
android:popupBackground | 设置下拉列表的背景 |
例子
AutoCompleteTextView 组件的用法其实很简单,只需要为它设置一个 Adapter 适配器,并在该适配器中添加 AutoCompleteTextView 提示列表中显示的文本信息即可。
模拟淘宝搜索宝贝时的提示列表
编写布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<!--添加自动完成文本框组件-->
<AutoCompleteTextView
android:id="@+id/at"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:background="@drawable/bg_username"
android:dropDownVerticalOffset="5dp"
android:layout_marginTop="10dp"
android:padding="10dp"
android:hint="输入内容"
android:dropDownWidth="match_parent"/>
</RelativeLayout>
编写MainActivity
public class AutoCompleteTextViewActivity extends AppCompatActivity {
private static final String[] book = new String[] {
"Android入门到精通", "Android开发实战",
"Android范例宝典", "Android精彩编程200例",
"Android项目开发|实战入门"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto_complete_text_view);
//设置全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//获取自动完成文本框组件
AutoCompleteTextView autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.at);
//创建数组适配器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, book);
//设置数组适配器
autoCompleteTextView.setAdapter(adapter);
}
}
效果