AutoCompleteTextView的使用非常简单
1:用AutoCompleteTextView代替EditView(AutoCompleteTextView是EditView的直接子类)
<AutoCompleteTextView
android:id="@+id/et_sendmsg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:dropDownHeight="100dp"
android:dropDownWidth="fill_parent"
android:background="@drawable/edit_normal"
android:layout_toLeftOf="@+id/bt_sendmsg" >
</AutoCompleteTextView>
2:在activity中实例化和绑定适配器
mEdiTextContent = (AutoCompleteTextView)findViewById(R.id.et_sendmsg);
//mEdiTextContent.setThreshold(1);// 输入一个字母就开始自动提示
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
//android.R.layout.simple_dropdown_item_1line, books);
R.layout.autocompletetextview, books);
mEdiTextContent.setAdapter(adapter);
3:设置pulldown的宽度高度及坐标(因为在oncreate方法中获取控件在屏幕的坐标都是(0,0),所以重写onWindowFocusChanged方法)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
int[] location = new int[2];
mEdiTextContent.getLocationInWindow(location);
int x = location[0];
int y = location[1];
Log.d("TAG",""+x+";"+y);
mEdiTextContent.setDropDownHorizontalOffset(-x);
mEdiTextContent.setDropDownVerticalOffset(-(appContext.height-y+mEdiTextContent.getDropDownHeight()));
super.onWindowFocusChanged(hasFocus);
}
AutoCompleteTextView的completionThreshold:它的值决定了你在AutoCompleteTextView至少输入几个字符,它才会具有自动提示的功能。另,默认最多提示20条。
dropDownWidth:设置自动提示列表的宽度。
android:completionHint | setCompletionHint(CharSequence) | 设置下拉菜单中的提示标题 |
android:completionHintView | 设置下拉菜单中提示标题的视图 | |
android:completionThreshold | setThreshold(int) | 设置用户至少输入几个字符才会显示提示 |
adnroid:dropDownAnchor | setDropDownAnchor(int) | 设置下拉菜单的定位“锚点”组件,如果没有指定该属性,将使用该TextView本身作为定位”锚点“组件 |
adnroid:dropDownHeight | setDropDownHeight(int) | 设置下拉菜单的高度 |
android:dropDownHorizontalOffest | 设置下拉菜单与文本框之间的水平偏移,下拉菜单默认与文本框左对齐 | |
adnroid:dropDownVerticalOffest | 设置下拉菜单与文本框之间的垂直偏移,下拉菜单默认紧跟文本框 | |
android:dropDownWidth | setDropDownWidth(int) | 设置下拉菜单的宽度 |
android:popupBackground | setDropDownBackgroundResource(int) | 设置下拉菜单的背景 |