Change word color in resource string

Is there anyway to set the color of a string resource in android? I mean, I know I can use some html tags to change string style (or substrings) but have not found any to change color. I have seen other solutions here at stackoverflow like passing the string to Html.fromHtml(string) before setting the text but I want to do it in the string resource editor. Any possibility?

Answers


As far as I know it is not possible. I would use a SpannableString to change the color.

    int colorBlue = getResources().getColor(R.color.blue);
    String text = getString(R.string.text);
    SpannableString spannable = new SpannableString(text);
    // here we set the color
    spannable.setSpan(new ForegroundColorSpan(colorBlue), 0, text.length(), 0);

Spannable is really nice. You can set thinks like fontseize and stuff there and just attach it to a text view. The advantage is that you can have different colors in one view.

Edit: Ok, if you only want to set the Color the solution mentioned above me is the way to go.


It looks like this method is working:

    <string name="some_text">this is <font fgcolor="#ffff0000">red</font></string>

The strings themselves have no color, but you can change the color of the text in the textView they appear in. See the textview documentation, but there are 2 ways to do it.

XML

android:textColor

Code

setTextColor(int)

I have recently made a flexible solution for this problem. It enables me of easily add multiple styles to substrings by using method chaining. It makes use of the SpannableString. When you want to give a certain substring a color, you can use ForegroundColorSpan.

public StyledString putColor(String subString, @ColorRes int colorRes){
    if(getStartEnd(subString)){
        int color = ColorUtil.getColor(context, colorRes);
        ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(color);
        fullStringBuilder.setSpan(foregroundColorSpan, startingIndex, endingIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    return this;
}

For full code see gist.


Need Your Help

MongoError: auth failed mongoose connection sting

mongodb mongoose connection-string

I can connect to the DB through terminal, but getting this error using mongoose and gulp.

Why is StringBuilder#append(int) faster in Java 7 than in Java 8?

java performance java-7 java-8 jmh

While investigating for a little debate w.r.t. using "" + n and Integer.toString(int) to convert an integer primitive to a string I wrote this JMH microbenchmark: