Я создал аннотированную строку в составном виде Jetpack и присвоил ее составному текстовому представлению. Он имеет несколько гиперссылок.
Код следующий:
@Composable
fun HyperlinkText(
fullText: String,
linkTexts: List,
linkUris: List,
linkTextColor: Color,
textColor: Color
) {
val annotatedString = buildAnnotatedString {
append(fullText)
linkTexts.map {
val startIndex = fullText.indexOf(it)
if (startIndex != -1) {
val endIndex = startIndex + it.length
if (endIndex > fullText.length) return@map
addStyle(
SpanStyle(
color = linkTextColor
),
startIndex,
endIndex
)
val indexOfLinkText = linkTexts.indexOf(it)
if (indexOfLinkText != -1) {
addStringAnnotation(
tag = ANNOTATION_URL,
annotation = linkUris[indexOfLinkText],
start = startIndex,
end = endIndex
)
}
}
}
}
val uriHandler = LocalUriHandler.current
var layoutResult by remember { mutableStateOf(null) }
Text(
text = annotatedString,
style = run { deviceTypography?.resolveStyle() ?: typography.resolveStyle() }.copy(
color = textColor
),
modifier = Modifier
.pointerInput(Unit) {
detectTapGestures { offset ->
layoutResult?.let { textLayoutResult ->
val position = textLayoutResult.getOffsetForPosition(offset)
annotatedString.getStringAnnotations(
tag = ANNOTATION_URL,
start = position,
end = position
).firstOrNull()?.let { stringAnnotation ->
uriHandler.openUri(stringAnnotation.item)
}
}
}
}
.focusable(),
onTextLayout = { layoutResult = it }
)
}
При навигации с помощью аппаратной клавиатуры фокус никогда не переходит на гиперссылку аннотированной строки. Я использую Jetpack Compose 1.7.0. Я пробовал смешивать и сопоставлять focusables и focusProperties в модификаторе, но ничего не работает. В чем может быть проблема?
Я создал аннотированную строку в составном виде Jetpack и присвоил ее составному текстовому представлению. Он имеет несколько гиперссылок. Код следующий: [code]@Composable fun HyperlinkText( fullText: String, linkTexts: List, linkUris: List, linkTextColor: Color, textColor: Color ) { val annotatedString = buildAnnotatedString { append(fullText) linkTexts.map { val startIndex = fullText.indexOf(it) if (startIndex != -1) { val endIndex = startIndex + it.length if (endIndex > fullText.length) return@map addStyle( SpanStyle( color = linkTextColor ), startIndex, endIndex ) val indexOfLinkText = linkTexts.indexOf(it) if (indexOfLinkText != -1) { addStringAnnotation( tag = ANNOTATION_URL, annotation = linkUris[indexOfLinkText], start = startIndex, end = endIndex ) } } } }
val uriHandler = LocalUriHandler.current var layoutResult by remember { mutableStateOf(null) } Text( text = annotatedString, style = run { deviceTypography?.resolveStyle() ?: typography.resolveStyle() }.copy( color = textColor ), modifier = Modifier .pointerInput(Unit) { detectTapGestures { offset -> layoutResult?.let { textLayoutResult -> val position = textLayoutResult.getOffsetForPosition(offset) annotatedString.getStringAnnotations( tag = ANNOTATION_URL, start = position, end = position ).firstOrNull()?.let { stringAnnotation -> uriHandler.openUri(stringAnnotation.item) } } } } .focusable(), onTextLayout = { layoutResult = it }
) } [/code] При навигации с помощью аппаратной клавиатуры фокус никогда не переходит на гиперссылку аннотированной строки. Я использую Jetpack Compose 1.7.0. Я пробовал смешивать и сопоставлять focusables и focusProperties в модификаторе, но ничего не работает. В чем может быть проблема?
Я создал аннотированную строку в составном виде Jetpack и присвоил ее составному текстовому представлению. Он имеет несколько гиперссылок.
Код следующий:
@Composable
fun HyperlinkText(
fullText: String,
linkTexts: List,
linkUris: List,...
Я создал аннотированную строку в составном виде Jetpack и присвоил ее составному текстовому представлению. Он имеет несколько гиперссылок.
Код следующий:
@Composable
fun HyperlinkText(
fullText: String,
linkTexts: List,
linkUris: List,...
Я создал аннотированную строку в JetPack Composable и назначил ее для композиционного текстового представления. Он имеет несколько гиперссылок.
Код такой, как ниже:
@Composable
fun HyperlinkText(
fullText: String,
linkTexts: List,
linkUris: List,...
При следующих настройках я могу заполнять контент в TextField только с помощью симуляторной клавиатуры, но не с физической, что не так? Как вы видите, Connect Hardware Keyboard включен, странно. Симулятор Vision Pro работает иначе, чем симулятор...
Я пытаюсь отправить клавишу со стрелкой вниз в диспетчере задач, но она не работает. Кстати, я пишу на C#. Есть ли способ сделать это на моем языке? Я пробовал много разных методов моделирования клавиатуры, например keybd_event.
Стрелка вниз...