标签:
首先我们来探讨下什么是样式(Style)
有这样一个情景,当我们在写一个布局文件中,里面有很多视图,它们有着相同的属性,如果每个视图都写一遍这样相同的属性,这样会显得代码相当累赘
而且在维护代码的时候非常不方便,这时我们就可以将这些相同属性的代码抽取出来,放到styles.xml中,方便我们修改代码。
如何声明一个样式呢?
在styles.xml文件中建立一个<style>节点,然后在这个节点中添加<item>子节点,如:
<style name="button_pre_style"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_alignParentBottom">true</item> <item name="android:layout_alignParentLeft">true</item> <item name="android:background">@drawable/button_bg</item> <item name="android:drawableLeft">@drawable/previous</item> <item name="android:text">上一步</item> <item name="android:onClick">pre</item> </style>
如何引用一个样式呢?
样式的应用必须在布局文件中,针对的是某些窗口的视图,应用的语法如下
style="@style/button_pre_style"
如何引用系统的样式?
style="@android:style/"
总结:样式多个视图属性的集合, 在写布局时, 当多个视图有不少相同的属性时, 可以把这些相同的属性放在一起在styles.xml中定义成一个Style, 而在布局文件中使用@style/style_name统一引用
接着我们来探讨一下主题
主题的本质也是style 在styles.xml中定义, 但与样式不同,主题是在manifest.xml中引用,而样式是在布局文件中应用的
如何定义一个主题?
定义一个主题的方法跟定义一个样式基本上是一样的
<style name="AppTheme" parent="AppBaseTheme"> <item name="android:textColor">#ff0000</item> </style> <style name="MyTheme" > <item name="android:textColor">#00ff00</item> <item name="android:windowNoTitle">true</item> </style>
如何引用一个主题?
主题是在manifest.xml中引用的,可以在application和activity两个节点的属性中通过android:theme="@style/AppTheme" 来引用
在activity中引用的主题会覆盖application中引用的主题,意思是说application引用的主题对整个应用的活动都是有用的,如果对单独的
activity引用特定的主题,当前的activity会覆盖application引用的主题,而显示的是activity的主题。
这里就存在一个优先级的问题?
视图内定义的样式>activity引用主题定义的样式>application引用主题定义的样式
如何引用系统的主题?
android:theme="@android:style/"
系统常用主题:
@android:style/Theme.Light.NoTitleBar :没有标题
@android:style/Theme.Light.NoTitleBar.Fullscreen: 全屏
@android:style/Theme.Dialog : 对话框
今天来讲讲Android的主题和样式(Theme和Style)
标签:
原文地址:http://www.cnblogs.com/Jsako/p/5695987.html