阅读更多
Android 风格和主题
Android xml风格和主题文件的编写,是涉及到整个程序界面美观的因素之一。 当设计应用程序时,你可以用风格和主题来统一格式化各种屏幕和UI元素。较好的应用风格和主题,可以实现美观而统一的界面,和web中的CSS一样,Android也可以为界面定义全局、公用的Style。
Styles和Themes都是资源文件位于res/values,当然,可以用Android提供的一些默认的风格和主题资源,也可以自定义自己的主题和风格资源。
Styles:
风格是一个包含一种或者多种格式化属性的集合,可以将其作为一个单位用在布局XML单个元素当中。 比如,可以定义一种风格来定义文本的文字大小和颜色,然后将其应用于视图 元素的一个特定实例。
Theme:
主题是一个包含一种或者多种格式化属性的集合,可以将其作为一个单位用在应用程序所有的活动当中或者某个活动当中。比如,可以定义一个主题,它为window frame和panel 的前景和背景设置了特定的颜色, 并为菜单定义文字的大小和颜色属性,然后将这个Theme应用到应用程序的Activity中。
Style和Theme的XML文件结构:
对每一个Styles和Themes,有一个根节点,给元素增加一个全局唯一 的名字,也可以选择增加一 个父类属性。在后边我们可以用这个名字来应用风格,而 父类属性标识了当前风格是继承 于哪个风格。在<style>元素内部,申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。
新建自定义的风格和主题 :
1. 在res/values 目录下新建一个名叫style.xml的文件。
2. 对每一个风格和主题,给<style>元素增加一个全局唯一的名字,和一个可选的父类属性。在后边我们可以名字来应用风格,而父类属性标识了当前风格是继承于哪个风格。
3. 在<style>元素内部,申明一个或者多个<item>,每一个<item>定义了一个名字属性,并且在元素内部定义了这个风格的值。
4. 然后可以在其他XML资源,manifest或应用程序代码中引用这些自定义资源。
风格Styles(SDK提供的Style的例子) :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpecialText" parent="@style/Text">
<item name="android:textSize">18sp</item>
<item name="android:textColor">#008</item>
</style>
</resources>
如上所示,你可以用<item>元素来为你的风格定义一组格式化的值。在Item当中的name属性可以 是一个字符串,一个16进制数所表示的颜色或者任何其他资源的引用。
注意:在<style>元素中的父类属性。这个属性让你可以能够定义一个资源,当前风格可以从这个资源当中继承到值。你可以从任何包含这个资源当中继承此风格。通常上,你的资源应该一直直接或者间接地继承Android的标准风格资源。这样的话,你就只需要定义你想改变的值。
在这个例子当中的EditText元素,演示了如何引用一个XML布局文件当中定义的风格:
<EditText id="@+id/text1"
style="@style/SpecialText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello, World!" />
现在这个EditText部件所表现出来的风格将是我们在上边的XML文件中所定义的那样。
另:转载一个自定义实例
1.在res/values 目录下新建一个名叫style.xml的文件。
2.在style.xml定义内容如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<style name=”DavidStyleText1″>
<item name=”android:textSize”>18sp</item>
<item name=”android:textColor”>#EC9237</item>
</style>
<style name=”DavidStyleText2″>
<item name=”android:textSize”>14sp</item>
<item name=”android:textColor”>#FF7F7C</item>
<item name=”android:fromAlpha”>0.0</item>
<item name=”android:toAlpha”>0.0</item>
</style>
</resources>
上面样式的定义,从字面意思就可以了解其功能了,下面看看如何应用它吧:
style="@style/DavidStyleText1"
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:gravity=”center_vertical|center_horizontal”
android:text=”moandroid”/>
style="@style/DavidStyleText2″
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:gravity=”center_vertical|center_horizontal”
android:text=”www.moandroid.com”
android:autoLink=”all”/>
现在这个EditText组件的所表现出来的风格就为我们在上边的XML文件中所定义的那样,如下:
看了新的界面是不是感觉漂亮多了,这也就是Styles的魅力吧。需要补充说明的是:单击超链接,还可以打开网页如下:
这是如何实现的了?TextView.setTextView不支持HTML TAG的输出,所以即便写成这样:
mTextView01.setText(”mo-android|享受Android带给我们的新体验”);实际输出时,也就是纯文本而已,并不会作HTML TAG的转换。但若撇开HTML TAG之外(如“<”开头的标记),在TextView里加上了android:autoLink=”all”,那么正文中若有网址(http://),是可以被显示的。
Theme依然在