提示文本框是会经常用到的一个功能。比如说百度、google搜索信息的时候在搜索框的下方会出现联想词。如图
那么android项目中的提示文本框需要的就是AutoCompleteTextView这个组件。
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.EditText
↳ android.widget.AutoCompleteTextView
从API中可以发现他是直接继承EditText类的,因此可以看出来,AutoCompleteTextView组件所提供的也是一个文本输入功能,只是比起EditText来讲功能更加的丰富一些。
首先AutoCompleteTextView的常用方法为:
public void clearListSelection() // 清除所有的下拉列表项
public ListAdapter getAdapter () // 取得数据集
public void setAdapter (T adapter) // 设置数据集
public void setOnClickListener (View.OnClickListener listener) // 设置单击事件
public void setOnItemClickListener (AdapterView.OnItemClickListener l) // 在选项上设置单击事件
public void setOnItemSelectedListener (AdapterView.OnItemSelectedListener l) // 选项选中时的单击事件
要使用AutoCompleteTextView首先得在activity_main.xml里面进行配置组件
<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"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<AutoCompleteTextView
android:id="@+id/myauto"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
在布局文件之中只是定义了组件,那么之后的操作将在MainActivity.java程序之中进行控制
package com.demo.autocompletetextviewpro;
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 String[] prompt = new String[] { "AN", "AND", "ANDROID",
"ANDROID 开发", "ANDROID 示例" };
// 定义组件
private AutoCompleteTextView auto = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 定义数据集
ArrayAdapter<String> prom = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, prompt);
// 取得组件
auto = (AutoCompleteTextView) findViewById(R.id.myauto);
// 设置内容
auto.setAdapter(prom);
}
@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;
}
}
这里只是简单的对文本提示框进行了显示操作,并没有进行太复杂的内容。运行结果如下:
当然也可以对程序添加各种事件。例如setOnItemClickListener()事件的添加
// 设置监听
auto.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
textView.setText("您选择的是"+prompt[(int) arg3]);
}
});
运行结果如下
当然还可以对AutoCompleteTextView添加更多的事件处理。这里将不再赘述