根据大小水平显示两个或多个文本 Jetpack compose Android

问题描述 投票:0回答:1

我需要逐行显示多个文本,类似于段落。我想要的实现类似于以下内容:

我当前的实现如下所示:

这是代码,

ConstraintLayout(modifier = Modifier.fillMaxWidth()) {
            val (title, viewAll) = createRefs()
            Text(text =
            "TestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestData ",
                modifier = Modifier
                    .background(Color.White)
                    .constrainAs(title) {
                        top.linkTo(
                            parent.top
                        )
                        start.linkTo(parent.start)
                        end.linkTo(viewAll.start)
                        width = Dimension.preferredWrapContent
                    }
            )
            Text(
                text = "Learn more",
                style = TextStyle(
                    color = MaterialTheme.colorScheme.primary,
                    textDecoration = TextDecoration.Underline
                ),
                modifier = Modifier.constrainAs(viewAll) {
                    start.linkTo(
                        title.end,
                        2.dp
                    )
                    end.linkTo(parent.end)
                    bottom.linkTo(title.bottom)
                }
            )
        }
android kotlin android-jetpack-compose android-constraintlayout android-flexboxlayout
1个回答
0
投票

您可以像这样显示带有可点击文本的段落。

@Composable
fun ParagraphWithClickableText() {
    val uriHandler = LocalUriHandler.current

    val paragraph = buildAnnotatedString {
        withStyle(style = SpanStyle()) {
            append("TestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestDataTestData ")
        }

        val learnMoreStart = length
        withStyle(style = SpanStyle(textDecoration = TextDecoration.Underline, color = Color.Blue)) {
            append("Learn more")
        }
        val learnMoreEnd = length

        addStringAnnotation(
            tag = "LearnMore",
            annotation = "LearnMore",
            start = learnMoreStart,
            end = learnMoreEnd
        )
    }
    ClickableText(
        text = paragraph,
        onClick = { offset ->
            val annotations = paragraph.getStringAnnotations(tag = "LearnMore", start = offset, end = offset)
            annotations.firstOrNull()?.let {
                val uri = "https://your_learn_more_url_here"
                uriHandler.openUri(uri)
            }
        }
    )
}
© www.soinside.com 2019 - 2024. All rights reserved.