android - Jetpack Compose IntrinsicSize.Min 限定符强制文本为 2 行

标签 android android-jetpack-compose

这是我要创建的文本。

enter image description here

我想使用 Divider() 在文本下方画一条线,但出了点问题。让我解释一下。

@Preview(showBackground = true)
@Composable
fun Example() {
Column(
     modifier = Modifier.width(IntrinsicSize.Min)
) {
    Text(text = "Jetpack Compose")
    Divider(
        color = Color.Red
    )
   }
}

enter image description here

问题:如您所见,IntrinsicSize.Min 强制我的文本为 2 行。发生这种情况是因为文本内有空白,我不想要它,我想要一个单行文本,其下方有分隔线。

我尝试过的

@Preview(showBackground = true)
@Composable
fun Original() {
Text(text = "Jetpack Compose", modifier = Modifier
    .padding(bottom = 1.dp)
    .drawBehind {
        drawRect(
            color = Color.Red,
            topLeft = Offset(0f, size.height),
            size = Size(width = size.width, height = 1.dp.toPx())
        )
    })
}

使用drawBehind修饰符按我的预期工作,但我认为对于这种情况应该有更好的方法。我们可以在不使用修饰符的情况下实现这一点吗?

最佳答案

将可组合文本所需的宽度设置为 IntrinsicSize.Max

@Preview(showBackground = true)
@Composable
fun UnderlinedText(text: String = "Jetpack Compose") {
    Column(Modifier.width(IntrinsicSize.Min)) {
        Text(
           modifier = Modifier.requiredWidth(IntrinsicSize.Max),
            text = text,
        )
        Divider(color = Color.Red)
    }
}

这将迫使您的文本可组合项尝试占用尽可能多的空间,同时仍然允许分隔符受到列宽度的限制。

关于android - Jetpack Compose IntrinsicSize.Min 限定符强制文本为 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76149719/

相关文章:

java - 暂停可运行的线程并等待用户输入

android - 为什么在 Jetpack Compose 项目中不显示列表项目图像?

android - 使用 Intent 和 ActivityResultContracts 选择并提取联系人详细信息

android - 如何通过委托(delegate)使用 mutableState 并使其可传递给另一个函数?

android - 在 Jetpack Compose 中显示对话框时如何隐藏导航栏?

android - Android 2.3 插件开发

java - Android MediaStore 播放列表返回错误轨道

android - Unity3D Android - 重叠状态栏

android - 如何在 VerticalScroller(android 开发人员撰写)中显示指标?

java - Android http 响应出现堆栈溢出错误