养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

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

时间:2024-11-15 11:42:33

Spinner控件,展示下拉列表,默认使用系统的样式。Spinner默认样式包括:Spinner本身样式和Spinner下拉样式(下拉列表样式),APP开发的需要,学会如何更改Spinner默认样式,制作出好看漂亮的下拉列表。

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

工具/原料

Android开发工具:AndroidStudio或Eclipse

Android测试工具:虚拟设备或测试手机

一、熟悉Spinner绑定数据源常用方法

1、ArrayAdapter添加数据源。构造方法ArrayAdapter(Context,int,String[]),Context表示上下文对象或者其子对象;int表示布局文件ID,设置Spinner选项的item样式;String[]表示绑定的数组。

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

2、BaseAdapter添加数据源。创建怡觎现喾MyBaseAdapter继承BaseAdapter,至少重写下面四个方法:getItem(int),getItemI颊俄岿髭d(int),getCount(),getView(int,View,ViewGroup),参考上一篇《Android开发之BaseAdapter方法详细分析》详细介绍

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

3、xml加载数据源数组。在定义布局文件时,添加Spinner属性android:entries,该属性的作用直接引用xml文件定义的数组数据,引用的方式,创建文件res/values/arrays.xml

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

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

二、自定义Spinner列表样式

1、关于Spinner样式,默认情况下,不同的主题Theme,有一套独立的Spinner样式,同时对应着一套下拉列表样式,TeachCourse需要特别说明:Spinner默认样式和下拉列表样式是两个不同的概念。在Theme.Light主题下,Spinner运行下图:

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

2、在Theme.Holo.Light主题下,Spinner运行效果和在Theme.Light运行效果有明显的区别。有时候别人会问,为什么同一个Spinner在不同手机上显示不一样的效果,可能就是这个原因吧!如下图:

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

3、默认情况下Spin艘绒庳焰ner有自己的样式属性,如果用户指定android:background属性值,那么默认样式和下拉列表样式将区仁苣逢被覆盖。但为什么默认样式和下拉列表样式是两种概念呢?查看源码,在Theme.Light主题默认系统属性值:btn_dropdown.xml,如下图:

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

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

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

4、在上面的第一张图片中,看到默认Spinner引用系统样式android:spinnerStyle,查看该样式的路径:sdk\platforms\android-23\data\res\values,关于默认属性值可以查看类文件源代码,下图:

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

5、通过对比android:background中的属性值蒹筻分虞后,发现Spinner在不同版本API中展示效果,只要通过android多唉捋胝:background属性值控制,那么我们就可以直接更改android:background中的值即可,比如,尝试更改Theme.Light主题下btn_dropdown.xml文件中的某一项,

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

© 一点知识