系统的AutoCompleteTextView是一个很好用的控件,但是不得不承认它的样式不怎么好看,这次正好用到了这个控件,将用到的一些效果记录一下。
先看一下项目结构:
1.src下两个类,一个是主窗体类,用来显示界面的,一个是AutoCompleteTextView用的适配器类,这个适配器类是直接用的ArrayAdapter的源码,修改成自己需要的样子。
2.drawable文件夹下的是AutoCompleteTextView下拉框的Item 的点击效果。
3.layout下的两个xml文件一个对应的是主窗体的布局,一个是下拉框的item对应的布局。
4.values文件夹下用到的有colors和styles。
首先来看一下主窗体MainActivity
public class MainActivity extends Activity {
/** AutoCompleteTextView **/
private AutoCompleteTextView CompleteText;
/** 模拟数据 **/
private String[] arrs = { "手", "手机", "没带手机", "手机信号差", "手机屏幕黑了", "手机停机了", "手好冷", "护手霜", "手提包", "飞机上不给用手机", "还有什么手机", "手机忘了", "多几个手机吧", "手机上不了网", "手机说说", "模拟器手游", "好的手机", "手上机" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//绑定布局
setContentView(R.layout.activity_main);
//绑定控件
CompleteText = (AutoCompleteTextView) findViewById(R.id.CompleteText);
//实例化我们自己的适配器
MyArrayAdapter<String> adapter = new MyArrayAdapter<String>(this, R.layout.search_item, arrs);
//绑定适配器
CompleteText.setAdapter(adapter);
//设置从1个字符开始匹配(最少一个字符)
CompleteText.setThreshold(1);
//响应下拉菜单的点击事件
CompleteText.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
TextView txt = (TextView) arg1;
Log.v("120", "选择了:" + txt.getText().toString());
}
});
}
}
代码很简单,就是绑定了控件,然后将自己的Adapter绑定给控件,然后添加了一个下拉框的单击事件。
主窗体对应的布局:activity_main.xml
<RelativeLayout 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:background="#ffffff"
tools:context=".MainActivity" >
<RelativeLayout
android:layout_width="match_parent"