Класс AnnotatedString
Класс AnnotatedString - это данные
для текста с разной разметкой по диапазонам.
Внутри лежит обычная строка и списки
стилей, ссылок и аннотаций.
Собрать объект удобно через
AnnotatedString.Builder,
а показать на экране - функцией
Text.
Синтаксис
val annotated = AnnotatedString("abcde")
Пример
Давайте соберём строку с жирным фрагментом:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.withStyle
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val annotated = buildAnnotatedString {
append("abcde")
addStyle(
SpanStyle(fontWeight = FontWeight.Bold),
start = 3,
end = 5,
)
}
Text(text = annotated)
}
}
}
На экране буквы "de" будут жирнее,
чем начало строки "abc".
Пример
Давайте соберём ту же строку через явный builder:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.font.FontWeight
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val builder = AnnotatedString.Builder()
builder.append("12345")
builder.addStyle(
SpanStyle(fontWeight = FontWeight.Bold),
start = 3,
end = 5,
)
val annotated = builder.toAnnotatedString()
Text(text = annotated)
}
}
}
На экране цифры "45" окажутся жирными,
а "123" - обычными.
Смотрите также
-
класс
AnnotatedString.Builder,
который по шагам собирает размеченную строку -
класс
SpanStyle,
который задаёт стиль отдельного фрагмента -
класс
LinkAnnotation,
который описывает ссылку внутри текста -
функция
Text,
которая рисует строку или AnnotatedString