Jetpack Compose 中可调整大小的 BasicTextField

问题描述

有没有办法在 Jetpack Compose 中生成可调整大小的 BasicTextField,以便在用户输入或删除字符时其宽度可以环绕文本大小?他们已经解决了类似的颤振问题,但我没有找到如何为 Compose 解决这个问题。 Flutter - how to make TextField width fit its text ("wrap content")

var text: String by rememberSaveable { mutableStateOf("") }
BasicTextField(
   value = text,onValueChange = {
       text = it
   },modifier = Modifier.wrapContentWidth()
)

不幸的是,wrapContentWidth() 在这里不起作用。

解决方法

我们可以指定宽度范围(textField 可以跨越的最小和最大宽度)

对于宽度:-

modifier = Modifier.widthIn(1.dp,Dp.Infinity) // specified the min width as 1.dp

对于高度:-

modifier = Modifier.heightIn(1.dp,Dp.Infinity) 

可组合代码:-

Column(modifier = Modifier.fillMaxWidth(),horizontalAlignment = Alignment.CenterHorizontally) {
     OutlinedTextField(
        value = text,onValueChange = {
           text = it
        },modifier = Modifier.widthIn(1.dp,Dp.Infinity)
     )
}

当我们输入更多直到 TextField 时,Dp.Infinity 会增长。 (使用 OutlinedTextField 进行演示,但我们可以使用 BasicTextField

enter image description here

,

好吧,看起来 width(IntrinsicSize.Min) 解决了这个问题:

var text: String by rememberSaveable { mutableStateOf("") }
BasicTextField(
   value = text,onValueChange = {
       text = it
   },modifier = Modifier.width(IntrinsicSize.Min)
)