AutoCompleteTextView控件自定义下拉框背景,点击效果,字体显示效果,匹配条件等效果

本文介绍了如何自定义Android中的AutoCompleteTextView,包括设置下拉框背景、点击效果、字体显示以及调整匹配条件。通过创建自定义适配器MyArrayAdapter,实现了关键字无论位于何处都能进行匹配,并用红色下划线高亮显示。
摘要由CSDN通过智能技术生成

系统的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"
       
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值