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我们进行快速的设置