Android开发之自定义Spinner下拉列表样式
Spinner控件,展示下拉列表,默认使用系统的样式。Spinner默认样式包括:Spinner本身样式和Spinner下拉样式(下拉列表样式),APP开发的需要,学会如何更改Spinner默认样式,制作出好看漂亮的下拉列表。
一、熟悉Spinner绑定数据源常用方法
- 01
ArrayAdapter添加数据源。构造方法ArrayAdapter(Context,int,String[]),Context表示上下文对象或者其子对象;int表示布局文件ID,设置Spinner选项的item样式;String[]表示绑定的数组。
- 02
BaseAdapter添加数据源。创建MyBaseAdapter继承BaseAdapter,至少重写下面四个方法:getItem(int),getItemId(int),getCount(),getView(int,View,ViewGroup),参考上一篇《Android开发之BaseAdapter方法详细分析》详细介绍
- 03
xml加载数据源数组。在定义布局文件时,添加Spinner属性 android:entries,该属性的作用直接引用xml文件定义的数组数据,引用的方式,创建文件 res/values/arrays.xml
二、自定义Spinner列表样式
- 01
关于Spinner样式,默认情况下,不同的主题Theme,有一套独立的Spinner样式,同时对应着一套下拉列表样式,TeachCourse需要特别说明:Spinner默认样式和下拉列表样式是两个不同的概念。在Theme.Light主题下,Spinner运行下图:
- 02
在Theme.Holo.Light主题下,Spinner运行效果和在Theme.Light运行效果有明显的区别。有时候别人会问,为什么同一个Spinner在不同手机上显示不一样的效果,可能就是这个原因吧!如下图:
- 03
默认情况下Spinner有自己的样式属性,如果用户指定android:background属性值,那么默认样式和下拉列表样式将被覆盖。但为什么默认样式和下拉列表样式是两种概念呢?查看源码,在Theme.Light主题默认系统属性值:btn_dropdown.xml,如下图:
- 04
在上面的第一张图片中,看到默认Spinner引用系统样式 android:spinnerStyle,查看该样式的路径: sdk\platforms\android-23\data\res\values,关于默认属性值可以查看类文件源代码,下图:
- 05
通过对比android:background中的属性值后,发现Spinner在不同版本API中展示效果,只要通过android:background属性值控制,那么我们就可以直接更改android:background中的值即可,比如,尝试更改Theme.Light主题下btn_dropdown.xml文件中的某一项,