设置文本颜色
tv.setText(Html.fromHtml("<font color = green>" + taskNum + "</font>" + "条任务," + "<font color = red>"
+ undoTaskNum + "</font>" + "条未完成"));
设置文本下划线
tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);// 设置下划线
或者:
tv.setText(Html.fromHtml("<u>使用html实现下划线样式</u>"));// 设置下划线
设置文字粗体:
tv.getPaint().setFakeBoldText(true);
布局文件中:
android:textStyle="bold"
设置文本中间横线
tv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);
TextView中设置图片:
除了设置background和drawableLeft,drawableRight之类最常用的方法外,还有两种方式可以设置图片
1.在Html中使用<img>标签标记一张图片,通过ImageGetter类来显示:
String htmlSource = "<b>TextView_1:</b> This is a "
+ "<a href=\"http://www.google.com\">link</a> "
+ "with a image."
+ "<img src=\"ic_launcher\">";
CharSequence chars = Html.fromHtml(htmlSource, new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable drawFromPath;
int path = MainActivity.this.getResources().getIdentifier(
source, "drawable", "com.michael.textviewdemo");
drawFromPath = (Drawable) MainActivity.this.getResources()
.getDrawable(path);
drawFromPath.setBounds(0, 0, drawFromPath.getIntrinsicWidth(),
drawFromPath.getIntrinsicHeight());
return drawFromPath;
}
}, null);
tvOne.setMovementMethod(LinkMovementMethod.getInstance());//如果没有这句,则链接点击无效
tvOne.setText(chars);
如果你想显示只有文本的Html,那么可以使用:
public static Spanned fromHtml (String source)
如果你的这个Html中包含了图片,例如上面的例子中的<img src=\"ic_launcher\">,那么你可以使用:
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
这个方法中的ImageGetter会处理你的Html中的<img>标签,生成Drawable返回。
2.使用ImageSpan对象来显示图片:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
ImageSpan iamgeSpan = new ImageSpan(this, bitmap);
SpannableString spannableString = new SpannableString("ic_launcher");
spannableString.setSpan(iamgeSpan, 0, 1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tvTwo.setText(spannableString);
我们可以看到里面使用到了SpannableString这个对象,当你需要对TextView中的个别文字进行特殊处理,比如,加入链接地址,设置个别文字的字体,颜色,背景色,甚至插入图片等等,这时候就可以用SpannableString对象。
你可以通过连续setSpan来达到这个目的。setSpan中的第一个参数是Span对象:可以有多种类型,比如:
- new URLSpan("http://www.google.com")
- new BackgroundColorSpan(Color.RED)
- new ForegroundColorSpan(Color.YELLOW)
- new StyleSpan(android.graphics.Typeface.BOLD_ITALIC)
- new UnderlineSpan();
- new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
很容易理解,通过设置这些Span来实现文字的特殊效果。
2,3两个参数是设置你的Span所针对的文字是哪些,索引从0到text.length。当然,如果你设置了ImageSpan,比如上面,那么第一个字符就被图片给替换掉了,因此,如果你不想被替换掉,那么你需要在text中为你的ImageSpan预留一个字符。
查看更多的Span可以参考android.text.style
一般的使用步骤是:
- SpannableString spannable = new SpannableString(str);
- // SpannableStringBuilder spannable = new SpannableStringBuilder(str);
- //创建各类Span
- CharacterStyle span=new UnderlineSpan();
- spannable.setSpan(span,start,end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
- //可以连续设置span
- view.setText(spannable);