TextView用法总法

Android UI —— TextView 篇

一、TextView不同区域设置颜色,大小、点击事件

String msg = getResources().getString(R.string.school_roll_auth);
		SpannableStringBuilder style = new SpannableStringBuilder(msg);
		// 设置字体颜色
		style.setSpan(
				new ForegroundColorSpan(getResources().getColor(
						R.color.tv_color_99)), 0, msg.length() - 5,
				Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
		style.setSpan(
				new ForegroundColorSpan(getResources().getColor(
						R.color.text_blue)), msg.length() - 5, msg.length(),
				Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
		// 设置字体背景色
		style.setSpan(
				new BackgroundColorSpan(getResources().getColor(
						R.color.bg_common)), msg.length() - 5, msg.length(),
				Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
		// 设置可点击部分
		style.setSpan(new ClickableSpan() {

			@Override
			public void onClick(View widget) {
				//do Click ....
			}

			@Override
			public void updateDrawState(TextPaint ds) {
				super.updateDrawState(ds);
				ds.setUnderlineText(false);
				ds.clearShadowLayer();
			}

		}, msg.length() - 5, msg.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
		tv_school_roll_msg.setText(style);
		// 此方法在需要响应用户事件时使用,如点击一个电话号码就跳转到拨号页面。如果不执行这个方法是不会响应事件的,即便文本看着已经是下划线蓝色字了。
		tv_school_roll_msg.setMovementMethod(LinkMovementMethod.getInstance());

 

//设置字体不同大小
SpannableStringBuilder sb = new SpannableStringBuilder(numText);

			sb.setSpan(new AbsoluteSizeSpan(App.getInstance().getResources()
					.getDimensionPixelSize(R.dimen.text_size_24)), 0,
					income.indexOf(".") + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
			sb.setSpan(new AbsoluteSizeSpan(App.getInstance().getResources()
					.getDimensionPixelSize(R.dimen.text_size_16)),
					income.indexOf(".") + 1, income.length(),
					Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
			view.setText(sb);

 注:Spannable.SPAN_EXCLUSIVE_EXCLUSIVE参数是对区域的说明,左包含,右不包含

 

 SpannableStringBuilder的append方法

SpannableStringBuilder sb = new SpannableStringBuilder(num);
SpannableStringBuilder sbUnitName = sb.append("元");
sbUnitName.setSpan(new AbsoluteSizeSpan(getResources().getDimensionPixelSize(floatSizeResourcesId)), num.length() - 1, num.length() + unitName.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

 append之后数符索引不是从0开始,是从原始字符开始

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值