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

jme*_*gan 36 java string android textcolor

我的意思是,是否可以将单词字符串中的"This text is blue"更改为蓝色?一定有办法......

<TextView
    android:gravity="left"
    android:padding="3dip"
    android:text="This text is white. This text is blue."
    android:textColor="#ffffff"
    android:textSize="22dp"/>
Run Code Online (Sandbox Code Playgroud)

ina*_*ruk 119

是的,它可能.为此你需要使用SpannableStringForegroundColorSpan.

这应该是这样的:

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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Jas*_*son 11

一种简单的方法是使用HTML并以TextView编程方式将文本设置为.

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


Sil*_*uti 6

试试这个..

TextView update= (TextView) dialog.findViewById(R.id.address);
String colorText= "Driver is nearby "
                + "<font color=\"#E72A02\"><bold>"
                + "43, KR Rd, Tata Silk Farm, Jayanagar"
                + "</bold></font>"
                + " and he is "
                + "<font color=\"#B92000\"><bold>"
                + "11 km"
                + "</bold></font>"
                + " & "
                + "<font color=\"#B92000\"><bold>"
                + "20 mins"
                + "</bold></font>"
                + " away from your current location.";

        update.setText(Html.fromHtml(colorText));
Run Code Online (Sandbox Code Playgroud)

结果将是这样的..

结果