从API结构图可见,自动完成文本框(AutoCompleteTextView)是从EditText派生出来的。它也是一个文本编辑框,由字面上理解都可知道,自动完成文本框的主要功能是:当用户输入一定的字符之后,自动完成文本框会显示一个下拉菜单,供用户从中选择(ps:这个功能不错,用户体验很好)
首先看看这自动完成文本框自己特有的xml属性:
下面来通过小案例来学习一下AutoCompleteTextView
(1)编写布局文件 activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<AutoCompleteTextView
android:id="@+id/auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionHint="输入你喜欢的书籍"
android:completionThreshold="1"
android:dropDownWidth="300dp"
android:dropDownHorizontalOffset="12dp"/>
</LinearLayout>
(2) 编写MainActivity.java
package com.example.autocompletetextview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
private AutoCompleteTextView autoText = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoText = (AutoCompleteTextView) findViewById(R.id.auto);//获取组件
/*==================== 方式一 数组方式 =========================*/
/*
* //设置匹配的提示内容数组
String[] texts = new String[]{"JAVA编程宝典","JAVA实战","疯狂java","疯狂android","JQUERY权威指南"};
//设置适配器 参数一:上下文 参数二:样式 参数三:匹配内容数组
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.select_dialog_singlechoice, texts);
//关联适配器
autoText.setAdapter(adapter);
*/
/*==================== 方式二 list集合方式 =========================*/
List<CharSequence> list = new ArrayList<CharSequence>();
list.add("JAVA编程宝典");
list.add("JAVA实战");
list.add("疯狂java");
list.add("疯狂android");
list.add("JQUERY权威指南");
//设置适配器 参数一:上下文 参数二:样式 参数三:匹配内容list
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this,android.R.layout.select_dialog_singlechoice, list);
//关联适配器
autoText.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
ps:看到代码中ArrayAdapter适配器是否似曾相识,没错,这里的适配器与上一节的Spinner的一样。其实AutoCompleteTextView与Spinner相同之处就是:大家都是弹出一个列表框给用户选择。所以我们平时学习时候要对比学习,这样学起来比较轻松,可能达到事半功倍的效果
好了,到了这里,一个AutoCompleteTextView的案例就完成了,挺简单的 。 看看效果吧: