AutoCompleteTextView自动提示输入,其使用在日常上网中随处可见,例如,当我们在百度输入关键字后,下面会自动那个出来一个提示下拉框,在Android中,其功能实现也非常简单,下面展示一下我学习的Demo。
activity_main.xml
<RelativeLayoutxmlns: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:background="#000000"
tools:context=".MainActivity">
<AutoCompleteTextView
android:id="@+id/act_complete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
//设置提示框整体的高和宽。
android:dropDownWidth="200dp"
android:dropDownHeight="200dp"
//设置提示框与输入框的竖直偏差
android:dropDownVerticalOffset="10dp"
//设置提示框与输入框的水平偏差
android:dropDownHorizontalOffset="10dp"
//设置用户输入几个字符时显示弹出提示框
android:completionThreshold="1"/>
</RelativeLayout>
为了便于代码的理解,就把注释直接添加到了.xml代码中,用的时候删掉注释即可,你懂的。
array.xml
因为要用到ArrayAdapter,所以创建了一个数组资源,便于一会的测试。
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<string-arrayname="context">
<item>aaaaa</item>
<item>aaaab</item>
<item>aabbc</item>
<item>bbbcccd</item>
<item>bbbbbc</item>
<item>bbb</item>
</string-array>
</resources>
MainActivity.java
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.widget.ArrayAdapter;
importandroid.widget.AutoCompleteTextView;
publicclassMainActivityextendsActivity{
privateAutoCompleteTextViewmyTextView;
privateString[]mContext;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext=getResources().getStringArray(R.array.context);
init();
}
privatevoidinit(){
myTextView=(AutoCompleteTextView)this
.findViewById(R.id.act_complete);
ArrayAdapter<String>adapter=newArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,mContext);
myTextView.setAdapter(adapter);
}
}
代码很简单,需要注意的一点是,在定义ArrayAdapter的时候,第二个参数,如果使用android.R.layout.simple_dropdown_item_1line,显示的提示框的字体为白色,请使用本例的android.R.layout.simple_list_item_1。至于为什么会这样还请大神指点。
最终效果图