Basierend auf der Antwort von @mladj0ni habe ich den folgenden Code zum Laufen gebracht. Das Problem war, dass man bei der Verwendung von String.format wird die HTML-Auszeichnung entfernt, so dass Sie die Klammersymbole in strings.xml entschlüsseln müssen:
strings.xml:
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
code.java:
String unspanned = String.format(Locale.US, "%s%s", getResources().getString(R.string. welcome_messages), 99);
Spanned spanned;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
spanned = Html.fromHtml(unspanned, Html.FROM_HTML_MODE_LEGACY);
} else {
spanned = Html.fromHtml(unspanned);
}
textView.setText(spanned);
Es ist einfacher als SpannableStringBuilder. Wie für die Leistung, wenn Sie nur eine Zeichenfolge anzeigen, dann wird der Benutzer nicht bemerken, die zusätzliche Millisekunde, um es zu parsen.
Siehe die Dokumentation ici .