是否可以在Java中将字符串中的文本颜色更改为多种颜色?

2022-09-01 03:21:53

我的意思是,是否可以在单个字符串中将文本“此文本为蓝色”更改为蓝色?一定有办法...

<TextView
    android:gravity="left"
    android:padding="3dip"
    android:text="This text is white. This text is blue."
    android:textColor="#ffffff"
    android:textSize="22dp"/>

答案 1

是的,这是可能的。为此,您需要使用SpantableStringForegroundColorSpan

这应该看起来像这样:

SpannableStringBuilder builder = new SpannableStringBuilder();

String red = "this is red";
SpannableString redSpannable= new SpannableString(red);
redSpannable.setSpan(new ForegroundColorSpan(Color.RED), 0, red.length(), 0);
builder.append(redSpannable);

String white = "this is white";
SpannableString whiteSpannable= new SpannableString(white);
whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, white.length(), 0);
builder.append(whiteSpannable);

String blue = "this is blue";
SpannableString blueSpannable = new SpannableString(blue);
blueSpannable.setSpan(new ForegroundColorSpan(Color.BLUE), 0, blue.length(), 0);
builder.append(blueSpannable);

mTextView.setText(builder, BufferType.SPANNABLE);

enter image description here


答案 2

执行此操作的一种简单方法是使用 HTML 并以编程方式将文本设置为 。TextView

String text = "This text is white. <font color=\"blue\">This text is blue.</font>";
textView.setText(Html.fromHtml(text), BufferType.SPANNABLE);