前一章写了Hello World之后,一直觉得没有写半行代码对不起自己,所以在本章人机界面一开始,则延续Hello Wolrd的气势,进行与TextView文字标签的第一次接触。在此范例中,将会在Layout中创建TextView对象,并学会定义res/values/strings.xml里的字符串常数,最后通过TextView的setText方法,在预加载程序之初,更改TextView文字。
<v:imagedata src="file:///C:\DOCUME~1\DAVIDL~1\LOCALS~1\Temp\msohtml1\01\clip_image004.png" o:title="3-1" /> </v:shape>
主程序示范以setText方法,输出String类型的字符串变量。
package irdc.ex03_01;
import android.app.Activity;
import android.os.Bundle;
/*必须引用widget.TextView才能在程序里声明TextView对象*/
import android.widget.TextView;
public class EX03_01 extends Activity
{
/*必须引用widget.TextView才能在程序里声明TextView对象*/
private TextView mTextView01;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/* 载入main.xml Layout,此时myTextView01:text为str_1 */
setContentView(R.layout.main);
/* 使用findViewBtId函数,利用ID找到该TextView对象 */
mTextView01 = (TextView) findViewById(R.id.myTextView01);
String str_2 = "欢迎来到Android的TextView世界...";
mTextView01.setText(str_2);
}
}
以android:id命名TextView的ID为mTextView01;在较旧的版本写法与1.0的不同,请特别留意。
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget35"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/myTextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_1"
android:layout_x="61px"
android:layout_y="69px"
>
</TextView>
</AbsoluteLayout>
TextView里的setText方法支持以下多态构造方法:
public final void setText(CharSequence text)
public final void setText(int resid)
public void setText(CharSequence text, TextView.BufferType type)
public final void setText(int resid, TextView.BufferType type)
public final void setText(char[] text, int start, int len)
在此,以最后setText(char[] text, int start, int len) 为例,第一个参数为char数组作为输出依
据,第二个参数为从哪一个元素索引开始选取,第三个参数则为要取出多少个元素,请看以下的例子:
char char_1[] = new char[5];
char_1[0] = 'D';
char_1[1] = 'a';
char_1[2] = 'v';
char_1[3] = 'i';
char_1[4] = 'd';
mTextView01.setText(char_1,1,3);
如上述程序所示,输出的结果是“avi”,因为从第1个元素索引开始,共取3个元素;最后则要提醒你,TextView.setTextView不支持HTML TAG的输出,所以即便写成这样:
mTextView01.setText("<a href=\"http://shop.teac.idv.tw/MyBlog/\">戴维的博客</a>");
实际输出时,也就是纯文本而已,并不会作HTML TAG的转换。但若撇开HTML TAG之外(如“<”开头的标记),在TextView里加上了android:autoLink="all",那么正文中若有网址(http://),是可以被显示的,以下这个范例就交给你自己实现看看。
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:autoLink="all"
android:text="请访问戴维的博客:http://shop.teac.idv.tw/MyBlog/"
/>
具体代码在附件。欢迎讨论。