我正在使用以下内容显示文字游戏应用中的剩余时间。
remainingTime.setText(String.format(Locale.getDefault(),"REMAINING TIME: %d MNS %d SECONDS ",(millisUntilFinished / 1000) / 60 ,(millisUntilFinished / 1000) % 60));
我想更改分钟和第二个文本的颜色。如何在其占位符中定义颜色?
答案 0 :(得分:0)
如果您使用Kotlin,则可以使用扩展功能来实现。
fun TextView.setColouredSpan(word: String, color: Int) {
val spannableString = SpannableString(text)
val start = text.indexOf(word)
val end = text.indexOf(word) + word.length
try {
spannableString.setSpan(ForegroundColorSpan(color), start, end,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
text = spannableString
} catch (e: IndexOutOfBoundsException) {
println("'$word' was not not found in TextView text")
}
}
将文本设置为TextView后使用它
private val blueberry by lazy { getColor(R.color.blueberry) }
textViewTip.setColouredSpan("Warning", blueberry)
答案 1 :(得分:0)
我做到了。我所做的就是使用正则表达式查找数字并使用 在matchs.find()的while循环中可用,以为匹配项的颜色着色。开头是索引,结尾是索引+ 2。
答案 2 :(得分:0)
您可以使用以下方法获取其他颜色的数字
public SpannableString getColoredString(String string, int color){
SpannableString spannableString = new SpannableString(string);
for(int i = 0; i < string.length(); i++){
if(Character.isDigit(string.charAt(i))){
spannableString.setSpan(new ForegroundColorSpan(color), i, i+1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
}
}
return spannableString;
}
在您的“活动”代码中,使用上述功能并将返回值设置为textview
String text = String.format(Locale.getDefault(),"REMAINING TIME: %d MNS %d SECONDS ",(millisUntilFinished / 1000) / 60 ,(millisUntilFinished / 1000) % 60);
SpannableString string = getColoredString(text, Color.YELLOW);
remainingTime.setText(string);