Android开发之自定义Spinner下拉列表样式

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