Android中的样式(Style)和CSS样式作用相似,都是用于为界面元素定义显示风格,它是一个包含一个或者多个view控件属性的集合。
如:需要定义字体的颜色和大小。

定义样式

第一步:在配置文件中定义样式

在应用的资源文件res/values/styles.xml文件中添加如下内容

style - styles.xml
1
2
3
4
5
6
7
8
<resources>
<style name="text"> <!-- 为样式定义一个全局唯一的名字-->
<item name="android:textSize">20sp</item> <!-- name属性的值为使用了该样式的View控件的属性 -->
<item name="android:textColor">#0000CC</item>
<itemname="android:layout_width">wrap_content</item>
<itemname="android:layout_height">wrap_content</item>
</style>
</resources>

第二步:在布局文件中引用样式

在layout文件中可以像下面这样使用上面的android样式:

layout - layout.xml
1
2
3
4
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ....>
<TextView style="@style/text"
..... />
</LinearLayout>

<style>节点还可以指定parent属性。这个属性可以让当前样式完全继承一个父样式,并且可以增删改一些新的样式。
如:
1
2
3
<style name=“text_title” parent="text"> <!-- 继承text样式-->
<item name="android:textSize">28sp</item> <!-- 修改文字大小的样式-->
</style>

Activity的主题配置

主题(Theme)的定义和样式的定义是一样的,在资源文件res/values/styles.xml中添加<style>节点:

1
<style name="AppBaseTheme" parent="android:Theme.Light"></style>

定义一个全屏的主题

style - styles.xml
1
2
3
4
<style name="NoTitle_FullScreen">
<item name="android:windowNoTitle”>true</item> <!– 无标题 -->
<item name=“android:windowFullscreen”>?android:windowNoTitle</item> <!– 全屏显示-->
</style>

Tips:?“用于引用在当前<style>节点中定义过的<item>的值(true)。

使用自定义的主题

配置在<application>节点上,为全局主题,配置在<activity>节点上,则是指定Activity的主题:

layout - layout.xml
1
2
3
4
5
6
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/NoTitle_FullScreen">
<activity android:theme="@style/NoTitle_FullScreen" ...></activity>
...
</application>

系统自带样式Android:theme.

查看文档的reference/android/R.style

  • android:theme=”@android:style/Theme.Dialog” 对话框
  • android:theme=”@android:style/Theme.NoTitleBar” 无标题栏
  • android:theme=”@android:style/Theme.NoTitleBar.Fullscreen” 不显示应用程序标题栏,并全屏
  • android:theme=”@android:style/Theme.Light” 背景为白色
  • android:theme=”@android:style/Theme.Light.NoTitleBar” 白色背景并无标题栏
  • android:theme=”@android:style/Theme.Light.NoTitleBar.Fullscreen” 白色背景,无标题栏,全屏
  • android:theme=”@android:style/Theme.Black” 背景黑色
  • android:theme=”@android:style/Theme.Black.NoTitleBar” 黑色背景,无标题栏
  • android:theme=”@android:style/Theme.Black.NoTitleBar.Fullscreen” 黑色背景,无标题栏,全屏
  • android:theme=”@android:style/Theme.Wallpaper” 用系统桌面为应用程序背景
  • android:theme=”@android:style/Theme.Wallpaper.NoTitleBar” 用系统桌面为应用程序背景,且无标题栏
  • android:theme=”@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen” 用系统桌面为应用程序背景,无标题栏,全屏
  • android:theme=”@android:style/Translucent” 透明主题
  • android:theme=”@android:style/Theme.Translucent.NoTitleBar” 无标题栏的透明主题
  • android:theme=”@android:style/Theme.Translucent.NoTitleBar.Fullscreen” 全屏模式的透明主题