单个占位符使用
%d %后边d表示数字类型,常见的数据类型有%s字符串类型、%f浮点类型
<string name="match_picture_count">人脸识别匹配的照片数量为:%d张</string>
//代码中引用
<string name="match_picture_count">人脸识别匹配的照片数量为:%d张</string>
多个占位符使用
%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);