Класс LinkAnnotation
Класс LinkAnnotation хранит
описание ссылки на диапазон текста.
Для перехода по адресу создают
LinkAnnotation.Url с параметром URL.
Для своего обработчика нажатия создают
LinkAnnotation.Clickable
с тегом и слушателем.
На строку ссылку вешают методом
addLink
у AnnotatedString.Builder.
Синтаксис
LinkAnnotation.Url("https://example.com")
Пример
Давайте сделаем кликабельный URL на экране:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.buildAnnotatedString
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val annotated = buildAnnotatedString {
append("abcde")
addLink(
LinkAnnotation.Url("https://example.com"),
start = 0,
end = 5,
)
}
Text(text = annotated)
}
}
}
На экране вся строка "abcde"
будет выглядеть как ссылка.
Пример
Давайте повесим Clickable только на хвост строки:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.buildAnnotatedString
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val annotated = buildAnnotatedString {
append("12345")
addLink(
LinkAnnotation.Clickable(tag = "tail"),
start = 3,
end = 5,
)
}
Text(text = annotated)
}
}
}
На экране кликабельным будет фрагмент "45",
а "123" останется обычным текстом.
Смотрите также
-
метод
addLink,
который ставит LinkAnnotation на диапазон -
класс
AnnotatedString,
который хранит текст вместе со ссылками -
класс
AnnotatedString.Builder,
который собирает размеченную строку -
функция
Text,
которая рисует текст со ссылками