Android_文档学习_UI_Applying Styles and Themes

Applying Styles and Themes

一种Style就是许多具体样子和View或者window的的格式属性的集合.一种Style可以具体化高度,间距,字体颜色,字体大小,背景色,还有其他多种属性.一种Style在一个和布局xml文件分开的xml源文件中被定义.

 

Android中的Style类似用来覆盖在网页设计中的样式表-它们允许你将内容和设计分开来.

 

例如用如下style将如下xml文件:

转换成如下:

所有这些和style相关的属性已经从layout xml文件中移除,并被定义,然后放到了一个叫做CodeFont的应用sytle属性的style文件中.你将会看到这个style的定义在下面的部分.

 

一个theme是应用与整个Activity 或者 应用程序的.而不像一个独立的View(像上面的例子).当一个style被应用为一个theme,在Actitivy中或应用程序中的每个VIEW将会应用style文件支持的每种style属性.例如,你可以用和CodeFont相同的style当作一个ActivityDE theme,然后所有在那个Activity中的文本将会有绿色的单一间隔的字体.一种颜色

 

Defining Styles

要创建一个style的集合,将一个xml文件保存你的项目中的res/values/目录下.xml文件的名字可以任意,但是必须用.xml文件做后缀.而且被保存在上述目录下.

 

xml文件的根节点必须为<resources>.

 

对你想创建的每个style,增加<style>元素,然后用唯一的名字标识这个style(这个属性是必须的).然后为每种属性增加<item>元素,用名字标识style的属性,然后给它定义个值.这个针对<item>的值,可以使一个关键字符,一种颜色,另一种资源类型的引用,或者其他取决于style属性的值.如下是一个简单的例子文件:

 

<resources>元素的每个子元素,在编译的时候被转换成一个application资源对象,这个对象可以被在<style>元素中的相应名字的属性值引用.这个例子style可以被来自layout xml文件引用就像@style/CodeFont(就像上面介绍和验证那样).

 

记住,一个你想用作一个Activity 或application的theme的style被定义在一个xml中(和一个对view的style一样).一个像上面那个被定义的style,可以被应用于一个单一的View或者当作整个Activity 或者 application.

 

Inheritance

在<style>标签中的元素的父属性,允许你具体化一个style从你的sytle需要继承的属性.你可以用这个继承已经存在的style的属性然后定义你想要改变或者增加的属性.你也可以从你自己已经创建的styles中继承.(具体参照文档: Using Platform Styles and Themes ,里面包括了继承style从一定义的style中).例如.你可以继承anroid平台的默认文本文本显示然后修改它.

你如你想要继承一些你自己已经定义的style文件.你不是一定要使用父元素的属性.相反,只需要你想要继承的新的style的名字的前缀.例如,创建一个新的style继承自上面定义的CodeFont style.但是试颜色为红色,你可创作新的style如下:

 

注意,这里没有父属性在<style>标签中.但是因为这个属性一CodeFont 的名字开始,这个style继承了CodeFont所有的属性..这个style,然后override这个android:textColor 属性,以便让文本变为红色.

 

你也可以像这样多次继承,如果你想的话,通过在名字后加链接.例如:你可以扩展CodeFont.Red让它字体更大,用如下代码:

这个从CodeFont和CodeFont.Red style继承,然后增加了字体大小的属性.

注意:这种用链接在一齐的名字的继承技术只在,那些你自己定义的资源中可用.而不能继承android,建立的style用这种方式.

Style Properties

所有的列出的style的可用属性参照TextView XML attributes(如果是对一个TextView做操作).这些属性都被列在

文档的android:inputType中.

定义一个EditText的style用如下代码:

你也可以用下面的代码代替,创建一个EditText元素包含下列属性:

在xml布局文件中,这样写:

Applying Styles and Themes to the UI

这里有两种方式设置style

  • 对一个单独的View来说,通过在你的layout xml中增加style属性给你的view元素.
  • 或者,对整个Activity或者application来说, 通过在你的android manifest文件中的<activity> or <application> .中加入android:theme属性.

当你给一个单一的view在layout中应用style的时候,这些被定义的属性只被用于这个view.如果一个style被用于一个viewgroup,那么子View也不会继承这些style属性--只有这些你直接应用style的元素会应用它的属性.然后你也可以用一种属性使得所有的子view元素都使用一种style--通过将这个style当作一个theme应用.

 

要将一个style定义出一个theme使用,你必须在android manifest应用一个activity or appliaction的style.当你这样做的时候,每个activity or application 的view都会应用它提供的属性.例如.如果你你用先前的codeFont style给一个activity,那么所有支持这种文本style的属性将会被应用到view元素.任何一个view不支持这种属性的将会忽略它们.如果只支持部分,则只应用它们的部分.

Apply a style to a View

如下代码是在一个xml布局文件中设置一个VIEW的style:

注意:style属性不使用android:namespace 前缀.

 

Apply a theme to an Activity or application

要给你的activity或者application设置一个theme,打开 AndroidManifest.xml文件,然后编辑 <application>标签,让它包含 android:theme属性和相应的style名字.例如:

同样对于对一个activity.代码如下:

Using Platform Styles and Themes

android平台提供了大量style和theme的集合,让你用于你的应用程序.你可以在R.style类中的所有可用的style中找到你想要的引用.使用这里的style列表,只要一会就能替换所有的有下划线的名字.例如,你可用 Theme_NoTitleBar主题用 "@android:style/Theme.NoTitleBar"代码.

 

然而,R.style参照,没有被很好地文档化,而且也没有全面的描述给这些styles,所以看具体style的具体代码可以让你更好的理解每个style提供的那些属性.详细请看文档的

这些文件会帮助你通过例子学习.例如,在android theme源码中,你会找到一个 <style name="Theme.Dialog">的具体声明.在这个定义中,你会看到所有的被android framework调用的用于dialog对话框的属性.

 

更多关于创建style的xml信息,参考文档Available Resource Types: Style and Themes .

 

对一个可用的style属性的引用,你可以用来定义一个style或一个theme(例如:"windowBackground" 或者 "textAppearance"),参照 R.attr或者你创建的style的各个View类.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值