Подтвердить что ты не робот

Жирные слова в строке strings.xml в Android

У меня есть длинный текст в одной из строк в strings.xml. Я хочу выделить жирным шрифтом и изменить цвет некоторых слов в этом тексте.

Как мне это сделать?

4b9b3361

Ответ 1

В основном вы можете использовать теги html в своем ресурсе строки, например:

<resource>
    <string name="styled_welcome_message">We are <b><i>so</i></b> glad to see you.</string>
</resources>

И используйте Html.fromHtml или используйте spannable, проверьте ссылку, которую я опубликовал.

Старый похожий вопрос: Возможно ли иметь несколько стилей внутри TextView?

Ответ 2

Использовать тег html внутри строк ресурсов: -

<resources>
<string name="string_resource_name"><![CDATA[<b> Your text </b>]]> </string>
</resources>

И получить полужирный текст из строковых ресурсов, например: -

private Spanned getSpannedText(String text) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            return Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT);
        } else {
            return Html.fromHtml(text);
        }
    }


 String s = format(context.getResources().getString(R.string.string_resource_name));
 textView.setText(getSpannedText(s));

Ответ 3

Как сказал Дэвид Олссон, вы можете использовать HTML в своих строковых ресурсах:

<resource>
    <string name="my_string">A string with <i>actual</i> <b>formatting</b>!</string>
</resources>

Затем, если вы используете getText(R.string.my_string) вместо getString(R.string.my_string) вы возвращаете CharSequence а не String которая содержит встроенное форматирование.

Ответ 4

Вы можете сделать это из строки

 <resources xmlns:tools="http://schemas.android.com/tools">

 <string name="total_review"><b>Total Review: </b> </string>

 </resources>

и может получить к нему доступ из кода Java, как

proDuctReviewNumber.setText(getResources().getString(R.string.total_review)+productDetailsSuccess.getProductTotalReview());

Ответ 5

В kotlin вы можете создавать функции расширений для ресурсов (деятельность | фрагменты | контекст), которые преобразуют вашу строку в HTML-диапазон

например

fun Resources.getHtmlSpannedString(@StringRes id: Int): Spanned = getString(id).toHtmlSpan()

fun Resources.getHtmlSpannedString(@StringRes id: Int, vararg formatArgs: Any): Spanned = getString(id, *formatArgs).toHtmlSpan()

fun Resources.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int): Spanned = getQuantityString(id, quantity).toHtmlSpan()

fun Resources.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): Spanned = getQuantityString(id, quantity, *formatArgs).toHtmlSpan()

fun String.toHtmlSpan(): Spanned = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY)
} else {
    Html.fromHtml(this)
}

использование

//your strings.xml
<string name="greeting"><![CDATA[<b>Hello %s!</b><br>]]>This is newline</string>

//in your fragment or activity
resources.getHtmlSpannedString(R.string.greeting, "World")