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


单个占位符使用 

%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);


效果显示

猜你喜欢

转载自blog.csdn.net/zhanlv/article/details/79941244