老是要一个个指定文字的大小、颜色也不是办法,有没有类似CSS样式的方法可用来指定颜色、大小呢?事实上是有的,在Android程序开发过程中,也可以通过样式(Style)的方式,初始化TextView的文本颜色、大小;当然这个范例只是抛砖引玉,在Layout当中的任何对象(以XML定义)都可以用样式化的方式来更改其外观。
在以下的范例中,将创建两个TextView作为对比,使其呈现两种不同的样式差异作为练习,而Style的写法与先前介绍到的颜色常数(color.xml)相同,同样是定义在res/values下面,但其XML定义的方式不同来看看以下这个范例练习。
1.主程序看起来非常干净,只有加载R.layout.main定义布局内容而已,但由于定义在main.xml里的语句不同,自然也有不同的样貌呈现。
- package com.xc.ex03_02;
- import android.app.Activity;
- import android.os.Bundle;
- public class EX03_06 extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.ex03_06);
- }
- }
2.诚如先前所述,初始化TextView时,指定Style属性,使其应用style.xml里事先定义好的样式。
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:background="@drawable/white"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- style="@style/DavidStyleText1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical|center_horizontal"
- android:text="@string/str_text_view1"
- />
- <TextView
- style="@style/DavidStyleText2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical|center_horizontal"
- android:text="@string/str_text_view2"
- />
- </LinearLayout>
3.此的style.xml就是这个范例的关键之处了,当中定义了两个样式名称,分别为DavidStyleText1与DavidStyleText2;留意于<style>TAG里以<item>描述的属性方式,与先前介绍Drawable name的描述类似。
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <style name="DavidStyleText1">
- <item name="android:textSize">18sp</item>
- <item name="android:textColor">#EC9237</item>
- </style>
- <style name="DavidStyleText2">
- <item name="android:textSize">18sp</item>
- <item name="android:textColor">#FF7F7C</item>
- <item name="android:fromAlpha">0.0</item>
- <item name="android:toAlpah">0.0</item>
- </style>
- </resources>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="str_text_view1">EX03_06:DavidStyleText1</string>
- <string name="str_text_view2">EX03_06:DavidStyleText2</string>
- </resources>
4.扩展学习。style与color的XML语法相类似,皆需要先声明xml的版本以及encoding为UTF-8,但其内的resources则需要以stylename作为样式名称,在最内层才是以item定义样式的范围,其语法如下:
- <style name=string [parent=string] >
- <item name=string>Hex value |
- string value | reference</item>+
- </style>
以上为SDK开发案例大全的内容。其中碰到报错就是在style.xml中的<item name="android:toAlpah">0.0</item>语句。于是想看看Alpah的含义。
解释如下:
<aalpha
ndroid:fromAlpha=”0.1″ android:toAlpha=”1.0″ android:duration=”3000″ />XML节点 功能说明
alpha 渐变透明度动画效果 fromAlpha 属性为动画起始时透明度 duration为动画持续时间,ms单位 toAlpha 属性为动画结束时透明度0.0表示完全透明
1.0表示完全不透明 以上值取0.0-1.0之间的float数据类型的数字
于是把<item name="android:toAlpah">0.0</item>改成<item name="android:toAlpah">1.0</item>。运行成功。
再将其该回成0.0也成功了。不知道问题出在哪。不过感觉两个效果相差不大。