【问题标题】:Wrap content around text in TextField在 TextField 中围绕文本包装内容
【发布时间】:2021-08-28 19:54:46
【问题描述】:

我正在尝试制作一个最小尺寸的 TextField,并围绕其中写入的文本展开,我该如何实现?

这是我的测试代码

var text by rememberSaveable { mutableStateOf("Prova") }
Row(
    modifier = Modifier.fillMaxWidth(),
    horizontalArrangement = Arrangement.SpaceBetween
) {
    Text(text = "Test")
    TextField(
        modifier = Modifier
//                .widthIn(10.dp, Dp.Infinity)
//                .width(IntrinsicSize.Min)
            .width(30.dp)
            .wrapContentWidth(),
        value = text,
        onValueChange = {
            text = it
        },
        textStyle = TextStyle.Default.copy(
            textAlign = TextAlign.End
        )
    )
}

这是我寻求的结果(应该在宽度上增加更多的文本,直到它碰到左边的文本)

感谢您的帮助!

【问题讨论】:

    标签: layout size android-jetpack-compose android-wrap-content


    【解决方案1】:

    在两者之间使用SpacerModifier.weight(1f) 将使其工作。

    我建议将 TextField 替换为 BasicTextField 以更好地控制其外观(特别是实现比 MinWidth 默认值 @987654326 更小的最小宽度@)。

    var text by rememberSaveable { mutableStateOf("Prova") }
        Row(
            modifier = Modifier.fillMaxWidth(),
            horizontalArrangement = Arrangement.SpaceBetween
        ) {
            Text(text = "Test")
            Spacer(modifier = Modifier.weight(1f))
            TextField(
                modifier = Modifier
                    .widthIn(1.dp),
                value = text,
                onValueChange = {
                    text = it
                },
                textStyle = TextStyle.Default.copy(
                    textAlign = TextAlign.End
                )
            )
        }
    

    【讨论】:

    • 谢谢,这可行,但是对于 TextField 和 BasicTextField 都有一个我无法覆盖的最小宽度,你知道我该怎么做吗?他们说您可以应用 widthIn 来覆盖它,但似乎不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多