AutoCompleteTextView修改下拉列表样式去点击时背景

AutoCompleteTextView是Android提供的一个输入自动匹配文本输入工具,使用这个控件可以让开发人员快速的完成输入的信息匹配,例如匹配搜索历史和搜索模糊匹配等等

然而这个控件在我们使用的的时候比较尴尬的地方是它的样式实在不怎么样,所以当我们修改的时候会遇到很多麻烦,本文仅以笔者自己遇到的困难点解决给出意见,希望能给后来者少走一些弯路

首先了解一下AutoCompleteTextView其实是一个editview和popupwindow,再通过filter来进行过滤的组合控件,所以我们在写它的adapter需要继承baseadapter同时实现Filterable接口


当我们写好的适配器并调试成功后会发现弹出的popupwindow会有一层黑色的阴影,那是应为popup的style时系统默认的主题,所以如果我们直接修改AutoCompleteTextView的background时只会改变editview的样式,如果想要修改popup的效果需要给AutoCompleteTextView设置style,在style中修改popup的样式就可以达到我们的目的了


然后设置给AutoCompleteTextView就可以了


但是当我们点击的时候会发现popup中的listview的默认背景没有去掉,这里我们就可以使用AutoCompleteTextView的android:dropDownSelector方法来设置来设置我们需要的颜色就可以了

注意:

如果我们给adapter设置的itemview时有背景的那么会导致我们给popup设置的描边被遮住,所以最好不要给item设置背景色

另附上AutoCompleteTextView给我们提供可以操作popup的方法,笔者在这里建议大家在写代码的时候最好能考虑的多控件的组合使用和样式设置,这样可以少走不少弯路,想清楚了再写代码,负责就会跟笔者一样忙了半天结果发现是几句话就可以解决的事情

android:completionHint         下拉列表下面的说明性文字
android:completionThreshold        弹出下来列表的最小字符个数
android:dropDownAnchor                下拉列表的锚点或挂载点
android:dropDownHeight         下拉列表高度
android:dropDownWidth         下拉列表宽度
android:dropDownHorizontalOffset       下拉列表距离左边的距离
android:dropDownSelector        下拉列表被选中的行的背景

在代码里可以设置setDropDownBackgroundResource我们进行快速的设置


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值