现在的位置: 首页 > 综合 > 正文

Applying Styles and Themes – 应用Style和Theme – Android官方文档中文翻译

2012年12月21日 ⁄ 综合 ⁄ 共 2735字 ⁄ 字号 评论关闭

原文链接:http://developer.android.com/guide/topics/ui/themes.html

原文标题:Applying Styles and Themes

原文版本:Android 2.2 r1 - 05 Aug 2010 8:29

中文翻译:Jack Yu            (yjmjack@gmail.com)

仅供非盈利使用,转载请保留出处及译者信息

 

应用StyleTheme

style是用于指定Viewwindow的外观、格式的一系列属性集合。style可以指定诸如高度、补白(padding)、字体颜色、字体大小、背景颜色等属性。style定义在一个不同于用来定义布局的XML资源中。

Android中的Style与网页设计中的层叠样式表有着相似的原理——它们允许你将设计和内容分离开来。

例如:通过使用一个style,你可以将下面这个布局XML

<TextView
   
android:layout_width="fill_parent"
   
android:layout_height="wrap_content"
   
android:textColor="#00FF00"
   
android:typeface="monospace"
   
android:text="@string/hello" />

      转换成这样:

<TextView
   
style="@style/CodeFont"
   
android:text="@string/hello" />

所有这些与风格相关的属性被从布局XML中移走,放入一个叫做CodeFont的风格定义中,然后通过style属性应用。在下面的章节中你将看到此style的定义。

      theme是一个应用于整个Activity或整个应用程序的style,而不是某一个单独的View(正如上面例子中那样)。当一个style被当作一个theme来应用时,此Activity或应用程序中的每个View都将会应用其所能支持的每个style属性。例如,你可以将CodeFont style作为theme应用在一个Activity上,那么此Activity中所有文本都将是绿色等宽字体。

定义Style

要创建一套style,请保存一个XML文件到你的工程的res/values/目录下。此XML文件的名称可以随意,但必须使用.xml作为扩展名,且必须保存在res/values/文件夹中。

      XML文件的根节点必须是<resources>

对每个你要创建的style,添加一个<style>元素到XML文件中,其拥有一个name,用来唯一标识此stylename是必须的)。然后为此style中的每一个属性添加一个<item>元素,其有一个name和一个值。<item>的值可以是一个关键字字符串、一个十六进制颜色、一个到其它资源类型的引用,或者是其他值,决定于具体的style属性。这里有一个单独的style例子:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
       
<item name="android:layout_width">fill_parent</item>
       
<item name="android:layout_height">wrap_content</item>
       
<item name="android:textColor">#00FF00</item>
       
<item name="android:typeface">monospace</item>
   
</style>
</resources>

      每个<resources>元素的子节点在编译时都被转换为一个应用程序资源对象,其可以通过<style> 元素的 name属性的值来引用。此示例style可以通过@style/CodeFont来在一个布局XML中引用(正如先前介绍中所演示的)。

      <style>中的parent属性是可选的,用来指定另外一个style的资源ID,前者继承后者的所有属性。你可以覆写继承来的style属性,如果你想那样做的话。

      记住,你想用作一个Activity或一个应用程序themestyle,与应用在一个View上的style定义方式是相同的。一个如同上面那样定义的style可以应用作一个Viewstyle,或者一个Activity或应用程序的theme。如何将一个style应用在一个View上,或者作为一个theme应用在一个应用程序中,我们稍后将作讨论。

继承

      <style>元素中的parent属性使得你可以指定一个style,从其中继承属性。你可以通过这种途径来从一个现有的style中继承属性,然后只用定义你想改变或添加的属性。你可以从你自己创建的style或者平台内建的style中继承。(参见下面的使用平台Style和Theme,以获得关于继承Android平台预定义的style的信息)例如你可以继承Android平台的默认文本外观并修改它:

    <style name="GreenText" parent="@android:style/TextAppearance">
       
<item name="android:textColor">#00FF00</item>
   
</style>

      如果你想继承你自己定义的style,你不必使用parent属性,而是将你想通过继承创建的新stylename前加上要继承的stylename,中间用一个点分隔。例如,创建一个继承自前面定义的CodeFontstyle,把颜色改为红色,你可以像这样编写新style

    <style name="CodeFont.Red">
       
<item name="android:textColor">#FF0000</item>
   
</style>

注意到在<style>标签中并没有parent属性。因为name属性以CodeFont起始(你已创建的一个style),此新style继承所有CodeFont的属性。此新属性覆写android:textColor属性将文本指定为红色。你可以通过@style/CodeFont.Red引用此新style。只要你愿意,你可以像这样继续继承很多次,只要更换句号前的名称即可。例如,你可以扩展CodeFont.Red使其字体变得更大:

    <style

抱歉!评论已关闭.