Android开发之源码分析,你不知道的秘密

2026-02-08 15:06:23

1、在打开的res文件夹下,看到了其他在Eclipse创建项目时无法自动生成的animanimatorcolor文件夹,这些文件夹在实际的项目开发中可以手动添加,存放的内容和系统提供的内容类型,哪天TeachCourse不记得res文件夹下 能够创建哪些文件夹时,不妨打开源码res文件夹看看哈。相当于我们可以在自己项目的res中重写系统这里的默认属性。

Android开发之源码分析,你不知道的秘密

2、如果让你如何重写系统的默认属性,你该怎么办呢?比如说,重写Spinner控件的默认样式和下拉选项样式。

3、上面我们讲解了Android项目结构,了解每个res下属文件夹的作用,那样我们修改起来显得很方便了。上面例子想要修改Spinner样式,重写android:background=""属性可以完成,这里需要注意的是,添加什么样的属性值合适呢?

4、如果你不清楚怎么添加属性值,添加什么样的属性值合适,可以打开源码下的Spinner控件默认属性android:background=""属性值添加方式(需要说明的系统所有控件样式定义在Style.xml文件,组件样式定义在Themes.xml,控件属性定义在attrs.xml),EditPlus(下载)打开style.xml文件,Ctrl+F找到Spinner控件,如下图:

Android开发之源码分析,你不知道的秘密

5、看到选项:<item name="background">@drawable/btn_dropdown</item>即系统定义的默认Spinner的background属性,属性文件位于drawable/btn_dropdown.xml路径下,依次打开,找到该文件,如下图:

Android开发之源码分析,你不知道的秘密

6、根据Spinner控件状态选择不同背景,我们要做的是:复制该文件到自己项目res/drawable中,修改各状态的背景样式(重写该属性),和美工商量定制一张自己“梦想”的背景:btn_dropdown_normal.png,最后引用定制的背景即可(这里使用blue_bg.9.png代替btn_dropdown_pressed.9.png),运行效果如下图:

Android开发之源码分析,你不知道的秘密

1、在Spinner中未提供android:textColor=""属性,就好像ListView一样,提供适配器指定布局、内容的方式修改字体颜色,Spinner和ListView不同的是:Spinner有下拉选项布局和默认布局两种方式。

Android开发之源码分析,你不知道的秘密

2、关于Spinner或ListView绑定数据的适配器使用,可以参考TeachCourse另外一篇文章《使用BaseAdapter需要注意的两个问题以及解决问题的办法》,可以使用的适配器有:BaseAdapterArrayAdapteSpinnerAdapter

3、三者适配器之间的区别:ArrayAdapter和SpinnerAdapter绑定数据的方式可以手动定义Spinner下拉列表样式和默认样式:

ArrayAdapter,使用setDropDownViewResource(int)方法;

SpinnerAdapter,使用回调方法getDropDownView(),如上面代码。

BaseAdapter,只可以手动定义默认样式(暂不清楚怎么设置下拉列表),但BaseAdapter使用方法和SpinnerAdapter一样,推荐使用SpinnerAdapter。

Android开发之源码分析,你不知道的秘密

Android开发之源码分析,你不知道的秘密

Android开发之源码分析,你不知道的秘密

4、修改Spinner控件颜色、样式和调整大小都不是啥事,只需要定义simple_spinner_item.xml布局和simple_spinner_dropdown_item.xml,然后引用自定义的而非系统的样式,即可实现修改Spinner字体颜色效果,如下图:

Android开发之源码分析,你不知道的秘密

Android开发之源码分析,你不知道的秘密

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢