老是要一个个指定文字的大小、颜色也不是办法,有没有类似CSS样式的方法可用来指定颜色、大小呢?事实上是有的,在Android程序开发过程中,也可以通过样式(Style)的方式,初始化TextView的文本颜色、大小;当然这个范例只是抛砖引玉,在Layout当中的任何对象(以XML定义)都可以用样式化的方式来更改其外观。

在以下的范例中,将创建两个TextView作为对比,使其呈现两种不同的样式差异作为练习,而Style的写法与先前介绍到的颜色常数(color.xml)相同,同样是定义在res/values下面,但其XML定义的方式不同来看看以下这个范例练习。

1.主程序看起来非常干净,只有加载R.layout.main定义布局内容而已,但由于定义在main.xml里的语句不同,自然也有不同的样貌呈现。

  1. package com.xc.ex03_02;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.  
  6. public class EX03_06 extends Activity {  
  7.       /** Called when the activity is first created. */ 
  8.     @Override 
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.ex03_06);  
  12.     }  
  13. }  

2.诚如先前所述,初始化TextView时,指定Style属性,使其应用style.xml里事先定义好的样式。

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:background="@drawable/white" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     android:orientation="vertical" > 
  7.     <TextView 
  8.         style="@style/DavidStyleText1" 
  9.         android:layout_width="fill_parent" 
  10.         android:layout_height="wrap_content" 
  11.         android:gravity="center_vertical|center_horizontal" 
  12.         android:text="@string/str_text_view1" 
  13.         /> 
  14.     <TextView 
  15.         style="@style/DavidStyleText2" 
  16.         android:layout_width="fill_parent" 
  17.         android:layout_height="wrap_content" 
  18.         android:gravity="center_vertical|center_horizontal" 
  19.         android:text="@string/str_text_view2" 
  20.         /> 
  21.       
  22.  
  23. </LinearLayout> 

3.此的style.xml就是这个范例的关键之处了,当中定义了两个样式名称,分别为DavidStyleText1与DavidStyleText2;留意于<style>TAG里以<item>描述的属性方式,与先前介绍Drawable name的描述类似。

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3. <style name="DavidStyleText1"> 
  4.     <item name="android:textSize">18sp</item> 
  5.     <item name="android:textColor">#EC9237</item> 
  6. </style> 
  7. <style name="DavidStyleText2"> 
  8.     <item name="android:textSize">18sp</item> 
  9.     <item name="android:textColor">#FF7F7C</item> 
  10.     <item name="android:fromAlpha">0.0</item> 
  11.     <item name="android:toAlpah">0.0</item> 
  12. </style>    
  13. </resources> 

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <string name="str_text_view1">EX03_06:DavidStyleText1</string>     
  4.     <string name="str_text_view2">EX03_06:DavidStyleText2</string>   
  5. </resources> 

4.扩展学习。style与color的XML语法相类似,皆需要先声明xml的版本以及encoding为UTF-8,但其内的resources则需要以stylename作为样式名称,在最内层才是以item定义样式的范围,其语法如下:

  1. <style name=string [parent=string>     
  2.  <item name=string>Hex value |   
  3. string value | reference</item>+   
  4.  </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也成功了。不知道问题出在哪。不过感觉两个效果相差不大。