android api 指南-Styles and Themes

  style是一些属性值得集合,这些属性值用来指定一个view 或者 window 的外观和格式。style可以只指定height,padding,font color,font size,background color,和很多其他属性。style 定义在xml资源文件中,与layout xml 文件独立开的。android中的style与web中的css有相似的设计哲学-允许设计样式和内容的分离。

  例如,使用style,你可以将这样的 layout 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" />

  所有与样式相关的属性都从layout XML 中移除了,放入了一个叫CodeFont的style中了,这个style被控件的样式属性中引用了。你可以在接下来的部分看到这个style。

  theme 是被整个 activity 或者app,而不是单个view(就像上面的例子)引用的style。当一个style被用作theme时,所有style指定的属性并且被activity或者app中的每个view所支持的属性,将会被引用。例如,你可以应用像CodeFont这样的style作为theme到一个Activity中,然后Activity中所有的文字都会变成green monospace字体。

定义 Style

  你只需要将XML文件保存在项目的res/values/目录下,就可以创建style。XML文件的名字是任意指定的,但是文件的拓展名必须是.xml 并且必须被保存在res/values/文件夹下。

  在文件中添加<style>元素,所有的style中的name属性是style的唯一的标识(这个属性是必须的)。接着为每个style的所指定的属性添加一个<item>元素,元素的name用来声明你想定义的style属性,同时给出属性的值(值是必须的)。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>的所有子元素都被转换为一个app的资源对象,可以使用在<style>元素定义的name值引用这个对象。例子里面的style能够在一个XML布局文件里面用 @style/CodeFont来引用(示例在上面的介绍中)。

  <style>元素的parent属性是可选的,用来指定继承自其它资源ID中的样式。如果需要你也可以在<style>中覆盖继承来的样式。

  注意,在Activity或者app中使用的style和为view定义的style在XML文件中的定义是完全一样的。例如上面例子中的style可以定义单个View的样式或者在Activity和app中用作theme。我们将在后面讨论如何使用style来定义单个style的样式或者用作app的theme。

(翻译整理自https://developer.android.com/intl/zh-cn/guide/topics/ui/themes.html#DefiningStyles

转载于:https://www.cnblogs.com/fooler/p/4841564.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值