android学习日记11

Styles and Themes

一个样式是一个属性的集合,他定义了一个View的外观和格式。他可以定义,高度、宽度、填充、间隔等等。他可以定义在一个独立的文件中。在android中的样式,是一个小于CCS的一个集合。它允许你把内容和设计分离。例如:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android学习日记(11)
android:textColor="#00FF00"
android:typeface="monospace"
android:text="@string/hello" />
转变为这样
<TextView

android:text="@string/hello" />

所有的属性都从layout文件中删除,并把他们放入@style/CodeFont文件中。并把应用到style属性中。一个主题是应用于一个应用中所有的Activity的样式。当一个主题应用于某个应用或者Activity,它们的所有样式属性都将修改。

Defining Styles

创建一个样式文件,需要放在res/values文件夹中,他是一个xml文件。根节点是<resources>,每一个样式都必须用<style>定义一个唯一的名字。用<item>定义每一个样式属性name属性表示属性名称,和一个值(可选)。<item>可以是一个关键字、一个颜色值、一个引用其他地方的属性或者其他依赖于这个属性的值。例如:
<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>
每一个<resurces>的子节点,都在编译阶段转变为一个资源对象,能用style的name属性引用。像上面的这个例子,可以用CodeFont来引用这个样式。parent属性定义了其他样式的资源ID,你可以覆写这些资源ID.记住样式和主题可以应用于一个View中。

Inheritance

parent属性让你继承一个父属性,从一个已经存在的样式文件中,或者覆写你要改变的属性。你可以继承你自定义的样式或者系统已有的样式。例如你可以继承和修改他系统的文本样式。
<style name="GreenText" parent="@android:style/TextAppearance">
<item name="android:textColor">#00FF00</item>
</style>
如果你想要继承你自己定义的样式,你并不需要parent属性。你可以使用.语法来定义一个已有属性的后缀。例如之前定义的CodeFont样式,你又想定义个文字颜色为红色,这个时候你就可以像下面这样定义
 <style name="CodeFont.Red">
<item name="android:textColor">#FF0000</item>
</style>
这里没有parent属性在个样式成分中。你还能够继续扩张
<style name="CodeFont.Red.Big">
<item name="android:textSize">30sp</item>
</style>
这是定义了在Red下的字体大小。这种技术只能用在你自定义的样式Xml中。要继承系统定义的属性文件必须使用parent属性。

Style Properties

现在你知道怎样定义一个样式了。我再来看看有哪些样式的种类。他们可以用<item>定义的。你或许已经熟悉其中的一些。例如layout_width和textColor,还有更多的属性。最好的方法是查看相关类的文档,那里有所有支持的样式和他们的作用。例如所有文本的样式都在TextView类的文档中。其中一个叫做android:inputType,他通常放在EditText成员中。
<EditText
android:inputType="number"
... />
你可以替换这个属性用style属性
<style name="Numbers">
<item name="android:inputType">number</item>
...
</style>
这样你的xml文件可以这样定义
<EditText

... />
这个简单的例子使你可以在不同的地方使用这个样式。所有可用的样式可以查看R.attr的文档。不是所有的样式被所有的View所接受,你要根据你的View来定义样式。一些样式属性不支持一些View,仅能够应用于主题。他要被应用于说有的窗口,而不是用在某些View。例如一些主题要隐藏标题、状态栏或者改变窗口背景。这些种类的属性并不属于一些View。查找这些属性可以到R.attr的Window中。例如:windowNoTitle和windowBackgroud属性仅在Activity或者Window产生影响。注意:不要忘了在<item>属性中添加android前缀。

Applying Styles and Themes to the UI

有两个途径设置一个样式当你单独的应用一个样式在可以在layout文件中添加。你给一个ViewGroup对象添加一个样式,他的子View不会继承。你可以应用一个样式应用于所有的子View就像一个主题。要应用一个主题,你必须把它应用于Activity或者一个应用。你必须定义在manifest文件中。每个View定义在Activity中的都要应用主题。如果你要应用一个CodeStyle,你的Activity都要应用这个样式。如果某个View不支持这个属性。他就忽略它。

Apply a style to a View

这里显示怎样应用一个样式到一个layout文件
<TextView

android:text="@string/hello" />
现在TextView样式将被定义为CodeFont注意:style属性不要android:名字空间。

Apply a theme to an Activity or application

设置一个主题,可以在<Application>标签中,使用android:theme属性。
<application android:theme="@style/CustomTheme">
如果想要应用一个主题到Activity中就要使用在<Activity>的android:theme属性。
<application android:theme="@style/CustomTheme">
就像其他许多系统构建的资源一样,系统也有很多主题,例如Dailog主题
<activity android:theme="@android:style/Theme.Dialog">
或者你想要背景透明
<activity android:theme="@android:style/Theme.Translucent">
如果你想要一个系统主题,但是有想要一定的个人风格。
<color name="custom_theme_color">#b0b0ff</color>
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:colorBackground">@color/custom_theme_color</item>
</style>
注意颜色属性必须分开设置,因为android:background属性必须引用。你需要用CustomTheme来替换原来的风格。
<activity android:theme="@style/CustomTheme">

Select a theme based on platform version

新版本的系统提供主题的适用性。你可能要用旧版本的主题。你能完成这个,使用资源后缀来定义不同版本的主题。例如这里定义一个基础版本的主题(高光)他是res/values/style.xml文件
<style name="LightThemeSelector" parent="android:Theme.Light">
...
</style>
如果你想要用一个新的版本的主题例如android3.0中的主题你可以使用res/values-v11这样的文件夹定义
<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
...
</style>
这样做以后,你的应用就能自动在android3.0时用这个主题你能使用的基础主题在R.styleable.Theme中。

Using Platform Styles and Themes

android系统提供了很多样式和主题给用户使用。你可以在R.style中找到很多样式。你可以用这些取代你的设置。例如你可以设置“android:style/NoTitleBar”更好的途径是看下列两个实例文件

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/186040.html

更多阅读

转载 《烈女传奇》新四军美女特工舒赛:曾令日寇军官

原文地址:《烈女传奇》新四军美女特工舒赛:曾令日寇军官折服全身而退作者:丹心红枫  舒赛,又名王藕,湖北江陵人,1917年9月15日生。家庭属于书香人家。抗战爆发后在武汉参加妇女战地工作团,1937年参加革命,1938年3月入应城汤池训练班学习,1

收集有趣的歇后语和谚语 谚语和歇后语的区别

2.读一书,增一智。 3.不吃饭则饥,不读书则愚。 4.不向前走,不知路远;不努力学习,不明白真理。 5.树不修,长不直;人不学,没知识。 6.用宝珠打扮自己,不如用知识充实自己。 7.蜂采百花酿甜蜜,人读群书明真理。 8.劳动是知识的源泉;知识是生活的指

第二十四讲:Android动画入门一 ? { Android学习指南 }

本讲内容:Android 动画入门指南1、补间动画2、逐帧动画Android中动画的实现分两种方式,一种方式是补间动画 Teen Animation,就是说你定义一个开始和结束,中间的部分由程序运算得到。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连

声明:《android学习日记11》为网友零温柔分享!如侵犯到您的合法权益请联系我们删除