假设我想在 句。
所以我用这个:
<string name="congratulations">Hello, how <font color="#00FFFF">do you</font> do</string>
但这不适用于Android 4.0。
因此,为了解决这个问题,我接下来使用:
<string name="congratulations">Hello, how <font fgcolor="#FF00FFFF">do you</font> do</string>
但这不适用于Android 4.3。
具有适用于所有Android 4.0 +版本的通用方法 对于不同的语言?
我发现这不适用于设备:操作系统版本:4.4.2 设备:HTC Desire 610。所以最后我使用这个解决方案:
<string name="expand"><![CDATA[<font color=#00FFFF>+</font> My contacts]]></string>.
当然,你需要在java代码中使用它:
Html.fromHtml(source);
所以现在它适用于所有 Adnroid 4.0+ 和所有语言。
我已经对SpannableString
做了一些非常相似的事情。 请看这个例子:
String a = getString(R.string.string1);
String b = getString(R.string.string2);
Spanned color1 = setSpanColor(a,Color.CYAN);
Spanned color2 = setSpanColor(b,Color.RED);
Spanned mixedColor = TextUtils.concat(color1, " ", color2);
// Now use `mixedColor`
设置跨度颜色
public Spanned setSpanColor(String string, int color){
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString ss = new SpannableString(string);
ss.setSpan(new ForegroundColorSpan(color), 0, string.length(), 0);
//ss.setSpan(new StyleSpan(Typeface.ITALIC), 0, string.length(), 0);
builder.append(ss);
return ss;
}
更新
另一种方法是使用Html
格式来实现,该格式也支持所有API
级别:
Spanned text;
String yourText = getResources().getString(R.string.congratulations);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
// For API 24(nougat)+
text =(Html.fromHtml("<font color='#FFEB3B'><b>"+yourText+"</b></font>",Html.FROM_HTML_MODE_LEGACY));
} else {
// pre API 24
text =(Html.fromHtml("<font color='#FFEB3B'><b>"+yourText+"</b></font>"));
}
// Now use `text`
沿着@S.R答案,您可以动态尝试。 从这里得到
TextView TV = (TextView)findViewById(R.id.mytextview01);
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TV.setText(wordtoSpan);