TextView

设置文本颜色

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对象:可以有多种类型,比如:

 

  1. new URLSpan("http://www.google.com")
  2. new BackgroundColorSpan(Color.RED)
  3. new ForegroundColorSpan(Color.YELLOW)
  4. new StyleSpan(android.graphics.Typeface.BOLD_ITALIC)
  5. new UnderlineSpan(); 
  6. new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);

很容易理解,通过设置这些Span来实现文字的特殊效果。

2,3两个参数是设置你的Span所针对的文字是哪些,索引从0到text.length。当然,如果你设置了ImageSpan,比如上面,那么第一个字符就被图片给替换掉了,因此,如果你不想被替换掉,那么你需要在text中为你的ImageSpan预留一个字符。

查看更多的Span可以参考android.text.style

 

一般的使用步骤是:

 

  1. SpannableString spannable = new SpannableString(str);
  2. // SpannableStringBuilder spannable = new SpannableStringBuilder(str);
  3. //创建各类Span
  4. CharacterStyle span=new UnderlineSpan(); 
  5. spannable.setSpan(span,start,end, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  6. //可以连续设置span
  7. view.setText(spannable);

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值