1. 常用属性
TextView被用来显示文本,常用属性:
- android:text,设置显示文本
- android:textSize,设置文字大小,推荐度量单位sp
- android:textColor,设置文本颜色
- android:textStyle,设置字形(normal/bold/italic)
- android:typeface,设置文本字体(normal/sans/serif/monospace)
- android:singleLine,设置单行显示
- android:lines,设置文本的行数
- android:maxLines,设置文本的最大显示行数
- android:minLines,设置文本的最小行数
- android:maxLength,设置显示的文本长度
- android:drawableLeft,在text的左边输出一个drawable
- android:drawableRight,在text的右边输出一个drawable
- android:drawableTop,在text的上边输出一个drawable
- android:drawableBottom,在text的下边输出一个drawable
- android:drawablePadding,设置text与drawable的间隔
2. 显示富文本
TextView控件显示不同颜色、大小、字体的文字。
几种常见的标签。
标签 | 含义 |
---|---|
font | 颜色和字体 |
big | 大号字 |
small | 小号字 |
i | 斜体 |
b | 粗体 |
tt | 等宽字体 |
br | 换行(行与行之间没有空行) |
p | 换行(行与行之间的空行) |
a | 链接地址 |
富文本字段,利用Html.fromHtml()
进行转义。
String richText = "<font color=\"red\">红色样式</font><br />"
+ "<big>大号字样式</big><br />"
+ "<small>小号字样式</small><br />"
+ "<i>斜体样式</i><br />"
+ "<b>粗体样式</b><br />"
+ "<tt>等t宽t样式</tt><br />"
+ "<p>段落样式</p><br />"
+ "<a href=\"http://www.baidu.com\">百度一下</a>";
TextView.setText(Html.fromHtml(richText));
调用setMovementMethod方法,使得链接生效。
TextView.setMovementMethod(LinkMovementMethod.getInstance());
显示如下
3. 设置样式
SpannableString类似于String,构造对象的时候传入一个String,之后无法更改内容。SpannableStringBuilder则更像是StringBuilder,它可以通过其append()方法来拼接多个字符串。
使用系统提供样式来修改文本。可参考Android Span应用。
SpannableString ss = new SpannableString("普通文本红色字体蓝色背景");
ss.setSpan(new ForegroundColorSpan(Color.RED), 4, 8, 0);
ss.setSpan(new BackgroundColorSpan(Color.BLUE), 8, 12, 0);
tv.setText(ss);
显示如下
4. 超级链接
android:autoLink显示超级链接,
- autoLink的值可以是web,phone, map, email, all, none,分别是url连接,电话号码提取拨号,地图地址,电子邮件,所有和默认情况(无链接)。
例如设置第一个文本的autoLink的值为web,显示为一个链接。不需要调用TextView的setMovementMethod()
方法,就可点击打开网页。
5. 行间距
android:lineSpacingExtra设置行间距,android:lineSpacingMultiplier设置行间距的倍数。
下面第一个文本是正常行间距,第二个文本是10dp行间距,第三个文本是2倍行间距。第四个文本调用了setLineSpacing()
方法来设置行间距。
6. 超长文本
android:ellipse属性,处理超长文本,可在文本中添加加省略号。
- start:省略号显示在开头
- end:省略号显示在结尾
- middle:省略号显示在中间
- marquee:以横向滚动方式显示(需获得当前焦点时)
下面第一个文本设置为start,第二个文本设置为middle,第三个文本设置为end。第四个文本设置为marquee,并且focusableInTouchMode和focusable为设置true。
7. 设置字体
字体文件digital-7.ttf保存在assets的fonts目录下
Typeface font = Typeface.createFromAsset(getAssets(),
"fonts" + File.separator + "digital-7.ttf");
tv.setTypeface(font);
显示如下