Android: раскраска части строки с использованием TextView.setText ()? - PullRequest
84 голосов
/ 04 февраля 2011

Я хочу изменить текст представления TextView с помощью метода .setText (""), а также раскрасить часть текста (или сделать его жирным, курсивом, прозрачным и т. Д.), А не остальное.Например:

title.setText("Your big island <b>ADVENTURE!</b>";

Я знаю, что приведенный выше код неверен, но он помогает проиллюстрировать, чего я хотел бы достичь.Как бы я это сделал?

Ответы [ 12 ]

1 голос
/ 08 мая 2018

Если вы используете Kotlin, вы можете сделать следующее, используя android-ktx библиотека

val title = SpannableStringBuilder()
        .append("Your big island ")
        .bold { append("ADVENTURE") } 

title.text = s 

bold - это функция расширения на SpannableStringBuilder.Вы можете просмотреть документацию здесь для списка операций, которые вы можете использовать.

Другой пример:

val ssb = SpannableStringBuilder()
            .color(green, { append("Green text ") })
            .append("Normal text ")
            .scale(0.5, { append("Text at half size " })
            .backgroundColor(green, { append("Background green") })

Где green - это разрешенный цвет RGB.

Можно даже вложить промежутки, чтобы вы получили что-то вроде встроенного DSL:

bold { underline { italic { append("Bold and underlined") } } }

Вам понадобится следующее на уровне модуля приложения build.gradle, чтобы оно работало:

repositories {
    google()
}

dependencies {
    implementation 'androidx.core:core-ktx:0.3'
}
1 голос
/ 10 июля 2017

Используйте этот код, это полезно

TextView txtTest = (TextView) findViewById(R.id.txtTest);
txtTest.setText(Html.fromHtml("This is <font color="#ff4343">Red</font> Color!"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...