WEB开发网
开发学院手机开发Android 开发 Applying Styles and Themes - 应用Style和Theme ... 阅读

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

 2011-01-11 06:59:21 来源:WEB开发网   
核心提示:记住,你想用作一个Activity或一个应用程序theme的style,Applying Styles and Themes - 应用Style和Theme - Android官方文档中文翻译(2),与应用在一个View上的style定义方式是相同的,一个如同上面那样定义的style可以应用作一个View的style,

记住,你想用作一个Activity或一个应用程序theme的style,与应用在一个View上的style定义方式是相同的。一个如同上面那样定义的style可以应用作一个View的style,或者一个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属性,而是将你想通过继承创建的新style的name前加上要继承的style的name,中间用一个点分隔。例如,创建一个继承自前面定义的CodeFont的style,把颜色改为红色,你可以像这样编写新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 name="CodeFont.Red.Big">

< item name="android:textSize">30sp< /item>

< /style>

它从CodeFont 和CodeFont.Red同时继承,然后添加android:textSize属性。

注意: 这种技巧仅适用于将你自己定义的资源链接起来。你不能用这种方式继承Android内建的style。要引用一个诸如TextAppearance的内建style,你必须使用parent 属性。

Style属性

到目前,你已明白了一个style是如何定义的,你需要学习由< item>元素定义的哪些属性是可用的。你很可能已经熟悉了某些,比如layout_width和textColor。当然,有更多的style属性供你使用。

寻找适用于某个特定View的属性的最佳去处是相对应的类参考,其列出了所有受支持的XML属性。例如,在表格TextView XML attributes中列出的所有属性可以被用在TextView元素(或其子类)的style定义中。其中有一个列出的属性是android:inputType,那么你通常可能将此android:inputType属性放置在一个< EditText>元素中,向下面这样:

< EditText

android:inputType="number"

... />

你也可以为包含此属性的EditText元素创建一个style:

< style name="Numbers">

< item name="android:inputType">number< /item>

...

< /style>

那么你的布局XML现在可以这样实现:

< EditText

style="@style/Numbers"

... />

这个简单的例子看起来增加了工作量,但当你添加越来越多的style属性并考虑到此style在不同地方的可重用性时,你会发现获益是巨大的。

关于所有可用的style属性,请参见R.attr。记住所有的View对象并不接受相同的style属性,所以你通常应该参考特定的View类,查看其所支持的style属性。然而,如果你对一个View应用了一个style,而其并不支持此style中某些属性,那么此View将应用那些它支持的,并简单忽略那些不支持的。

Tags:Applying Styles Themes

编辑录入:coldstar [复制链接] [打 印]
赞助商链接