展会信息港展会大全

Android学习笔记10:TextView的使用
来源:互联网   发布日期:2015-11-25 22:10:09   浏览:2088次  

导读:TextView不仅可以用于显示丰富的文本信息,还可以用来显示图文并茂的混排页面。 1.TextView常用属性 TextView的常用属性有以下一些: setText();...

TextView不仅可以用于显示丰富的文本信息,还可以用来显示图文并茂的混排页面。

1.TextView常用属性

TextView的常用属性有以下一些:

setText();//设置文本内容,同xml中的android:text

setTextSize();//设置文本字体大小,同xml中的android:textSize

setTextColor();//设置文本颜色,同xml中的android:textColor

setBackgroundColor();//设置背景颜色,同xml中的android:background

此外,还可以在xml中设置一些TextView的属性,如下:

android:autoLink//设置是否显示为可点击的链接。可选值(none/web/email/phone/map/all)

android:drawableBottom//在text的下方输出一个drawable(图片)

android:drawableLeft//在text的左边输出一个drawable(图片)

android:drawableRight//在text的右边输出一个drawable(图片)

android:drawableTop//在text的正上方输出一个drawable(图片)

android:drawablePadding//设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果

android:ellipsize//设置当文字过长时,该控件该如何显示。可设置如下属性值:"start"省略号显示在开头;"end”省略号显示在结尾;"middle"省略号显示在中间; "marquee" 以跑马灯的方式显示(动画横向移动)

android:gravity//设置文本位置,设置成"center",文本将居中显示

android:linksClickable//设置点击时是否链接,即使设置了autoLink

android:marqueeRepeatLimit//在ellipsize设定为marquee时,设置重复滚动的次数,设置为marquee_forever时表示无限次。

android:lines//设置文本的行数,设置两行就显示两行,即使第二行没有数据

android:shadowRadius//设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好

android:shadowColor//指定文本阴影的颜色,需要与shadowRadius一起使用

android:singleLine//设置单行显示

android:textColorLink//设置文字链接的颜色

android:textScaleX//设置文字之间间隔,默认为1.0f

android:textStyle//设置字形 bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2, 可以设置一个或多个,用“|”隔开

android:typeface//设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3

2.TextView显示URL文本

在TextView中预定义了一些类似HTML的标签,通过这些标签可以使TextView控件显示不同的颜色、大小和字体的文字。HTML的常用标签有以下一些:

<font>设置文本的字体、字体颜色、字体尺寸,如:<font size ="3" color = "red">This is Some Text!</font>

<big>设置大号字体效果

<small>设置小号字体效果

<i>设置斜体文本效果

<b>设置粗体文本效果

<a>通过使用href属性,创建指向另外一个文档的链接(超链接),如:<a href = http://www.baidu.com>百度</a>

<br>插入一个简单的换行符,注意:在HTML中,<br>标签没有结束标签

<p>自定在其前后创建一些空白

<img>向网页中嵌入一幅图像,该标签有两个必须的属性:src和alt,如:<img src = "/i/tulip.jpg" alt = "郁金香" />

使用这些标签时,可以用Html.fromHtml()方法将这些标签的字符串转换成CharSequence对象,然后在TextView中通过setText()方法将CharSequence对象显示出来。

3.TextView中显示图片

要在TextView中显示图片,首先需要将要显示的图片存放在res目录下的drawable-hdpi目录下,在R.java文件中则会自动生成图片资源的映射信息。然后就可以使用getField()方法通过图片资源id的变量名来获取图片资源了。具体实现方法如下:

获取图片资源id

1public int getResourceId(String name) {//获取福娃图片资源id

2try {

3Field field = R.drawable.class.getField(name);//根据资源id的变量名获得Field对象,使用反射机制来实现

4return Integer.parseInt(field.get(null).toString());//取得并返回资源id的字段值(静态变量)

5}

6catch (Exception e) {

7//TODO

8}

9return 0;

10}

获得了图片资源id后,就可以通过Drawable drawable = getResources().getDrawable(getResourceId(source))方法来获得图片资源信息进行描画了。具体实现方法如下:

显示福娃图片

1public void showFuWaImage() {//显示福娃图片

2String html_fuwa = "<img src = 'beibei' />" +

3"<img src = 'jingjing' />" +

4"<a href = 'http://www.baidu.com'><img src = 'huanhuan' /></a>" +//超链接“欢欢”图片到百度

5"<img src = 'yingying' />" +

6"<img src = 'nini' />";

7

8CharSequence charSequence_fuwa = Html.fromHtml(html_fuwa, new ImageGetter() {//将图片加载到字符序列中

9public Drawable getDrawable (String source) {

10Drawable drawable = getResources().getDrawable(getResourceId(source));//获得图片资源信息

11if (source.equals("beibei") || source.equals("nini")) {//将图片“贝贝”和“妮妮”压缩到原图片尺寸的80%

12drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*4/5, drawable.getIntrinsicHeight()*4/5);

13} else if (source.equals("huanhuan")) {//将图片“欢欢”放大到原图片尺寸的120%

14drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*5/4, drawable.getIntrinsicHeight()*5/4);

15} else {//其他福娃图片保持原图片尺寸

16drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

17}

18return drawable;

19}

20}, null);

21

22textView_fuwaImage.setText(charSequence_fuwa);//将字符序列加载到textView控件中

23textView_fuwaImage.setMovementMethod(LinkMovementMethod.getInstance());

24}

如上,便可以在TextView控件中显示图片了。其中,使用到了drawable.setBounds()方法进行图片的缩放操作,将图片“贝贝”和“妮妮”压缩到原图片尺寸的80%,将图片“欢欢”放大到原图片尺寸的120%。并通过<a href = 'http://www.baidu.com'><img src = 'huanhuan' /></a>方法在图片“欢欢”上添加了超链接。最后,使用textView_fuwaImage.setMovementMethod(LinkMovementMethod.getInstance())方法使点击时产生链接效果。

4.TextView中显示跑马灯效果

要在TextView控件中显示跑马灯效果,需要进行以下几项必须的设置:

android:singleLine="true"//设置显示的行数

android:ellipsize="marquee"//设置以跑马灯形式显示

android:marqueeRepeatLimit="marquee_forever"//设置跑马灯显示的次数

android:focusable="true"//设置聚焦

android:focusableInTouchMode="true"//

android:linksClickable="true"//在跑马灯中设置了超链接时,设置了此属性才能产生链接效果

5.TextView应用实例

本实例中,在MainActivity.java中定义了4个TextView控件:textView_marquee,textView_fuwaImage,textView_fuwaText,textView_showMyActivity,分别用来显示跑马灯,福娃图片,描述福娃的一段文字,以及一个实现跳转到MyActivity页面的标签。

MainActivity页面的实现效果如图1所示。

图1 MainActi

vity页面显示效果

具体的MainActivity.java源代码如下。

MainActivity.java源码

1 package com.example.android_textview;

2

3 import java.lang.reflect.Field;

4

5 import android.os.Bundle;

6 import android.app.Activity;

7 import android.content.Intent;

8 import android.graphics.Color;

9 import android.graphics.drawable.Drawable;

10 import android.view.Menu;

11 import android.view.MenuItem;

12 import android.view.View;

13 import android.widget.TextView;

14 import android.support.v4.app.NavUtils;

15 import android.text.Html;

16 import android.text.Html.ImageGetter;

17 import android.text.Spannable;

18 import android.text.SpannableString;

19 import android.text.Spanned;

20 import android.text.method.LinkMovementMethod;

21 import android.text.style.ClickableSpan;

22

23 public class MainActivity extends Activity {

24

25private TextView textView_marquee;//跑马灯

26private TextView textView_fuwaImage;//福娃图片

27private TextView textView_fuwaText;//描述福娃的文字

28private TextView textView_showMyActivity;//MyActivity跳转标签

29

30public int getResourceId(String name) {//获取福娃图片资源id

31try {

32Field field = R.drawable.class.getField(name);//根据资源id的变量名获得Field对象,使用反射机制来实现

33return Integer.parseInt(field.get(null).toString());//取得并返回资源id的字段值(静态变量)

34}

35catch (Exception e) {

36//TODO

37}

38return 0;

39}

40

41public void showTextViewMarquee() {//显示跑马灯

42String html_marquee =

43"万众瞩目的北京奥运会<a href = ‘http://www.baidu.com’>吉祥物</a>" +//超链接“吉祥物”字段到百度

44"于北京时间11日20:18正式揭晓," +

45"奥运吉祥物福娃:形象为鱼、熊猫、奥运圣火、藏羚羊、燕子," +

46"名字是贝贝、晶晶、欢欢、迎迎、妮妮,即北京欢迎你";

47CharSequence charSequence_marquee = Html.fromHtml(html_marquee);

48textView_marquee.setText(charSequence_marquee);

49textView_marquee.setMovementMethod(LinkMovementMethod.getInstance());//点击时产生超链接效果

50}

51

52public void showFuWaImage() {//显示福娃图片

53String html_fuwa = "<img src = 'beibei' />" +

54"<img src = 'jingjing' />" +

55"<a href = 'http://www.baidu.com'><img src = 'huanhuan' /></a>" +//超链接“欢欢”图片到百度

56"<img src = 'yingying' />" +

57"<img src = 'nini' />";

58

59CharSequence charSequence_fuwa = Html.fromHtml(html_fuwa, new ImageGetter() {//将图片加载到字符序列中

60public Drawable getDrawable (String source) {

61Drawable drawable = getResources().getDrawable(getResourceId(source));//获得图片资源信息

62if (source.equals("beibei") || source.equals("nini")) {//将图片“贝贝”和“妮妮”压缩到原图片尺寸的80%

63drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*4/5, drawable.getIntrinsicHeight()*4/5);

64} else if (source.equals("huanhuan")) {//将图片“欢欢”放大到原图片尺寸的120%

65drawable.setBounds(0, 0, drawable.getIntrinsicWidth()*5/4, drawable.getIntrinsicHeight()*5/4);

66} else {//其他福娃图片保持原图片尺寸

67drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

68}

69return drawable;

70}

71}, null);

72

73textView_fuwaImage.setText(charSequence_fuwa);//将字符序列加载到textView控件中

74textView_fuwaImage.setMovementMethod(LinkMovementMethod.getInstance());

75}

76

77public void showFuWaText() {//显示描述福娃的文字

78textView_fuwaText.setTextColor(Color.BLACK);

79textView_fuwaText.setBackgroundColor(Color.WHITE);

80textView_fuwaText.setTextSize(15);

81String string_fuwaText =

82"“福娃”是五个拟人化的娃娃,他们的原型和头饰蕴含着与海洋、森林、火、大地和天空的联系," +

83"应用了中国传统艺术的表现方式,展现了灿烂的中国文化的博大精深。" +

84"北京奥运会吉祥物的每个娃娃都代表着一个美好的祝愿:" +

85"贝贝象征繁荣、晶晶象征欢乐、欢欢象征激情、迎迎象征健康、妮妮象征好运。" +

86"五个福娃分别叫“贝贝”、“晶晶”、“欢欢”、“迎迎”、“妮妮”。各取它们名字中的一个字有次序的组成了谐音“北京欢迎你”。";

87textView_fuwaText.setText(string_fuwaText);

88}

89

90public void showMyActivityPage() {//显示MyActivity页面

91String text_showMyActivity = "跳转到MyActivity页面......";

92SpannableString spannnableString = new SpannableString(text_showMyActivity);//用来拆分字符串

93spannnableString.setSpan(new ClickableSpan() {//设置点击时的触发范围为整个字符串

94public void onClick(View widget) {

95Intent intent = new Intent(MainActivity.this,MyActivity.class);//从MainActivity页面跳转到MyActivity页面

96startActivity(intent);

97}

98}, 0, text_showMyActivity.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

99textView_showMyActivity.setText(spannnableString);

100textView_showMyActivity.setMovementMethod(LinkMovementMethod.getInstance());

101}

102

103@Override

104public void onCreate(Bundle savedInstanceState) {

105super.onCreate(savedInstanceState);

106setContentView(R.layout.activity_main);

107

108textView_marquee = (TextView)this.findViewById(R.id.textview_marquee);

109textView_fuwaImage = (TextView)this.findViewById(R.id.textview_fuwaImage);

110textView_fuwaText = (TextView)this.findViewById(R.id.textview_fuwaText);

111textView_showMyActivity = (TextView)this.findViewById(R.id.textview_showMyActivity);

112

113showTextViewMarquee();//显示跑马灯

114showFuWaImage();//显示福娃图片

115showFuWaText();//显示描述福娃的文字

116showMyActivityPage();//显示MyActivity页面

117}

118

119@Override

120public boolean onCreateOptionsMenu(Menu menu) {

121getMenuInflater().inflate(R.menu.activity_main, menu);

122return true;

123}

124

125 }

与MainActivity.java相对应的activity_main.xml文件如下。

activity_main.xml源码

1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2xmlns:tools="http://schemas.android.com/tools"

3android:orientation="vertical"

4android:layout_width="match_parent"

5android:layout_height="match_parent" >

6

7<!-- 跑马灯 -->

8<TextView

9android:id="@+id/textview_marquee"

10android:layout_width="match_parent"

11android:layout_height="wrap_content"

12android:singleLine="true"

13android:ellipsize="marquee"

14android:marqueeRepeatLimit="marquee_forever"

15android:focusable="true"

16android:focusableInTouchMode="true"

17android:linksClickable="true"

18android:background="#FFFFFF"

19android:textColor="#000000"

20android:layout_margin="10dp"

21android:padding="10dp"

22android:textSize="20dp"/>

23

24<!-- 福娃图片 -->

25<TextView

26android:id="@+id/textview_fuwaImage"

27android:layout_marginLeft="30sp"

28android:layout_marginTop="10sp"

29android:layout_marginBottom="10sp"

30android:layout_width="match_parent"

31android:layout_height="wrap_content"

32android:background="#FFFFFF"/>

33

34<!-- 描述福娃的文字 -->

35<TextView

36android:id="@+id/textview_fuwaText"

37android:layout_margin="10dp"

38android:layout_width="match_parent"

39android:layout_height="wrap_content"/>

40

41<!-- MyActivity页面 -->

42<TextView

43android:id="@+id/textview_showMyActivity"

44android:layout_marginLeft="30sp"

45android:layout_width="match_parent"

46android:layout_height="wrap_content"

47android:textSize="15sp"/>

48

49 </LinearLayout>

通过点击MainActivity页面中的“跳转到MyActivity页面......”,可以实现跳转到MyActivity页面的功能。在MyActivity页面定义了2个TextView控件:textView_androidText和textView_myinfo,分别用来显示一段描述Android的文字,和使用Html标签来实现的带有超链接功能的个人信息显示。

MyActivity页面的实现效果如图2所示。

图2 MyActivity页面显示效果

具体的MyActivity.java源代码如下。

MyActivity.java源码

1 package com.example.android_textview;

2

3 import android.app.Activity;

4 import android.os.Bundle;

5 import android.text.Html;

6 import android.text.method.LinkMovementMethod;

7 import android.widget.TextView;

8

9 public class MyActivity extends Activity {

10

11private TextView textView_androidText;//描述Android的文字

12private TextView textView_myinfo;//我的信息

13

14public void showAndroidText() {//显示描述Android的文字

15String html_androidText = "<font color = 'red'><big>I Love Android......</big></font><p>";

16html_androidText += "<font color = '#0000FF'><small><i>" +

17"Android是基于Linux的自由及开放源代码的操作系统," +

18"主要使用于便携设备,如智能手机和平板电脑。</i></small></font><br>";

19html_androidText += "<font><small><a href = 'http://www.baidu.com'>查看更多......</a></samll></font>";

20

21CharSequence charSequence = Html.fromHtml(html_androidText);

22textView_androidText.setText(charSequence);

23textView_androidText.setMovementMethod(LinkMovementMethod.getInstance());//点击的时候产生超链接

24}

25

26public void showMyInfo() {//显示我的信息

27String text_myinfo = "我的博客:http://www.cnblogs.com/menlsh\n";

28text_myinfo += "我的邮箱:mls19880708@163.com\n";

29text_myinfo += "我的电话:13478479496";

30textView_myinfo.setText(text_myinfo);

31textView_myinfo.setMovementMethod(LinkMovementMethod.getInstance());

32}

33

34public void onCreate(Bundle savedInstanceState) {

35super.onCreate(savedInstanceState);

36setContentView(R.layout.activity_my);

37

38textView_androidText = (TextView)this.findViewById(R.id.textview_androidText);

39textView_myinfo = (TextView)this.findViewById(R.id.textview_myinfo);

40

41setTitle("我的主页");//设置MyActivity的标题

42showAndroidText();//显示描述Android的文字

43showMyInfo();//显示我的信息

44}

45

46 }

与MyActivity.java相对应的activity_my.xml文件如下。

activity_my.xml源码

1 <?xml version="1.0" encoding="utf-8"?>

2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

3android:layout_width="match_parent"

4android:layout_height="match_parent"

5android:orientation="vertical" >

6

7<!-- 描述Android的文字 -->

8<TextView

9android:id="@+id/textview_androidText"

10android:layout_width="match_parent"

11android:layout_height="wrap_content"

12android:padding="20sp"/>

13

14<!-- 显示个人信息 -->

15<TextView

16android:id="@+id/textview_myinfo"

17android:layout_width="match_parent"

18android:layout_height="wrap_content"

19android:padding="20sp"

20android:autoLink="all"

21android:textSize="12sp"/>

22

23 </LinearLayout>

在MyActivity页面点击“ 时,可以产生超链接效果,如图3所示。

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港