主题是由一组应用到整个应用程序中的风格构成的。主题定义了应用程序中的各种外观。android中引入了主题和风格的概念。风格可以被应用到一个视图(View),而主题只能用到整个应用程序。
风格(Styles):
风格(Styles)用xml文件的格式定义,这些文件存放在工程项目中的res/values目录下。
以下是一个TextView的定义:
- <TextView android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textColor="#FFF"
- android:typeface="monospace"
- android:text="First Text View"
- android:background="#00F"
- />
以上代码定义了一个TextView,包括文本框的宽度和高度,字体大小,字体格式,并且设置了蓝背景。
如果我们想用风格来实现同样的效果,我们首先要定义一个xml文件(style.xml),这个文件放在res/values目录下。如下所示:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <style name="BlueLabel">
- <item name="android:layout_width">fill_parent</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:typeface">monospace</item>
- <item name="android:background">#00F</item>
- <item name="android:textColor">#FFF</item>
- </style>
- </resources>
然后重新定义TextView文件:
- <TextView android:text="First Text View"
- style="@style/BlueLabel"
- />
这样就能得到与之前同样的效果。
在<item>条目里可以添加任意的属性定义。
继承风格:
Android中的风格有很多有趣的特性,可以像CSS那样继承别的风格,例如:
我们有如下的一个针对button的风格定义:
- <style name="ButtonStyle">
- <item name="android:layout_width">wrap_content</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:textSize">15px</item>
- <item name="android:typeface">serif</item>
- </style>
button看起来是这样的
我们可以让这个button继承BlueLabel,代码如下:
- <style name="ButtonStyle" parent="BlueLabel">
button就成了这样
button从父风格文件里继承了蓝背景这个属性。
主题(Themes):
你可以将一个主题应用到整个应用程序,或只用到一个activity。
如果将主题应用到一个activity,那么这个activity中的所有widgets都会使用这个主题。
要实现这个功能,打开AndroidManifest.xml,添加如下代码:
- <activity android:name=".StylesDemo"
- android:label="@string/app_name" android:theme="@style/BlueLabel">
如果要将主题应用到整个应用程序中,那么所有的activity都会使用这个主题,实现方法为:打开AndroidManifest.xml,添加如下代码:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/BlueLabel">