Android字符串中占位符的使用及设置部分字体颜色

单个占位符使用 

%d %后边d表示数字类型,常见的数据类型有%s字符串类型、%f浮点类型

<string name="match_picture_count">人脸识别匹配的照片数量为:%d张</string>

代码中引用

String text = String.format(getString(R.match_picture_count),6)//传入一个整型

多个占位符使用

%1$s %后边数字1表示第1个占位符,$后边s表示数据类型,填写参数时按数据类型顺序填写

<string name="play_user_photo_tip">检测到昵称为%1$s的用户,%2$d秒后开始播放%3$s的相册\n若点击取消按钮,则暂时关闭人脸识别。</string>

 

// 从资源获取字体大小
			int pixelSize = getResources().getDimensionPixelSize(R.dimen.enrollment_sp48);
			// 第一个参数:包含占位符字符串
			// 第二个可变参数:替换字符串的占位符,按数据类型填写,不然会报错
			String playUserPhotoTip = String.format(getString(R.string.play_user_photo_tip), mUser.getName(), tick,
					mUser.getName());
			int index = playUserPhotoTip.indexOf(String.valueOf(tick));
			// 字体颜色
			ColorStateList redColors = ColorStateList.valueOf(Color.WHITE);
			// 使文本以指定的字体、大小、样式和颜色绘制。0表示使用默认的大小和字体
			TextAppearanceSpan textAppearanceSpan = new TextAppearanceSpan(null, 0, pixelSize, redColors, null);
			// 使用SpannableStringBuilder设置字体大小和颜色
			SpannableStringBuilder spanBuilder = new SpannableStringBuilder(playUserPhotoTip);
			// Parameters: what start 起始 end 结束 flags
			/*
			 * Spanable中的常用常量: Spanned.SPAN_EXCLUSIVE_EXCLUSIVE --- 不包含头和尾
			 * Spanned.SPAN_EXCLUSIVE_INCLUSIVE --- 不包含头但包含尾
			 * Spanned.SPAN_INCLUSIVE_EXCLUSIVE --- 包含头但不包含尾
			 * Spanned.SPAN_INCLUSIVE_INCLUSIVE--- 包含头和包含尾
			 */
			spanBuilder.setSpan(textAppearanceSpan, index, index + 1, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
			mWindowMessage.setText(spanBuilder);

效果显示

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值