15.2.2  TextView组件

在前面介绍的移动开心网的登录界面已经使用过TextView组件,但只涉及了TextView组件非常初级的用法。TextView组件的功能远不止显示文本这么简单,在本节将更进一步介绍TextView组件的功能。

TextView组件的基本用法在前面已经多次接触到了,下面再来回顾一下。TextView组件使用<TextView>标签定义,下面的代码是TextView组件最基本的用法。


  1. < TextView   android:id = "@+id/textview1"  
    android:layout_width = "fill_parent"
  2. android:layout_height = "wrap_content"  
    android:text = "可以在这里设置TextView组件的文本"   />


上面的代码表示TextView的宽度应尽可能充满TextView组件所在的容器。将高度设为wrap_content,表示TextView组件的高度需要根据组件中文本的行数、字体大小等因素决定。

当然,还可以对TextView组件进行更复杂的设置,例如,设置TextView组件的文字字体大小、文字颜色、背景颜色、文本距 TextView组件边缘的距离、TextView组件距其他组件的距离等。下面的代码包含了3个<TextView>标签,这3个标签设置 了上述的TextView组件的相应属性。


  1. <? xml   version = "1.0"   encoding = "utf-8" ?>
  2. < LinearLayout   xmlns:android = "http://schemas.
    android.com/apk/res/android"
  3. android:orientation = "vertical"   android:
    layout_width = "fill_parent"
  4. android:layout_height = "fill_parent" >
  5. < TextView   android:id = "@+id/textview1"  
    android:layout_width = "fill_parent"
  6. android:layout_height = "wrap_content"  
    android:textColor = "#0000FF"
  7. android:background = "#FFFFFF"   android:
    text = "可以在这里设置TextView组件的文本"   />
  8. < TextView   android:id = "@+id/textview2"  
    android:layout_width = "fill_parent"
  9. android:layout_height = "wrap_content"  
    android:text = "更复杂的设置"
  10. android:textSize = "20dp"   android:textColor = "#FF00FF"
  11. android:background = "#FFFFFF"   android:
    padding = "30dp"   android:layout_margin  = "30dp" />
  12. < TextView   android:id = "@+id/textview3"  
    android:layout_width = "fill_parent"
  13. android:layout_height = "wrap_content"  
    android:textColor = "#FF0000"
  14. android:background = "#FFFFFF"   android:
    text = "可以在这里设置TextView组件的文本"   />
  15. </ LinearLayout >


上面代码中大多数属性的含义从字面上就可以猜出来,但要注意两个属性:android: padding和android:layout_margin,其中android:padding属性用于设置文字距TextView组件边缘的距 离,android:layout_margin属性用于设置TextView组件距离相邻其他组件的距离。这两个属性设置的都是四个方向的距离,也就是 上、下、左、右的距离。如果要单独设置这四个方向的距离,可以使用其他的属性,这些属性名字的规则是在这两个属性后面添加Left、Right、Top和 Bottom,例如,设置TextView组件距离左侧的组件的距离,可以使用android: layout_marginLeft属性。

要注意的是,由于第2个<TextView>标签的android:layout_width属性值是fill_parent,因此, 文字距TextView组件右侧的距离并不是android:padding属性的值。系统会优先使用android:layout_width属性的值 来设置TextView组件到右侧组件(这里是屏幕的右边缘)的距离。

除了可以在XML布局文件中设置TextView组件的属性外,还可以在代码中设置TextView组件的属性(实际上,所有的组件都可以采用这两种方式设置它们的属性)。例如,下面的代码设置了文本的颜色。


  1. TextView  textView
  2. textView.setTextColor(android.graphics.
    Color.RED); //  使用实际的颜色值设置字体颜色 


设置TextView组件背景色的方法有3个,这些方法如下。

setBackgroundResource:通过颜色资源ID设置背景色。

setBackgroundColor:通过颜色值设置背景色。

setBackgroundDrawable:通过Drawable对象设置背景色。

下面的代码分别演示了如何用这3个方法来设置TextView组件的背景色。

使用setBackgroundResource方法设置背景色:


  1. textView.setBackgroundResource(R.color.background); 


使用setBackgroundColor方法设置背景色:


  1. textView.setBackgroundColor(android.graphics.Color.RED); 


使用setBackgroundDrawable方法设置背景色:


  1. Resources  resources = getBaseContext
  2. Drawable  drawable = resources
  3. textView.setBackgroundDrawable(drawable);