有没有办法在 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()
在这里不起作用。
答案 0 :(得分:1)
我们可以指定宽度范围(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
)
答案 1 :(得分:1)
好吧,看起来 width(IntrinsicSize.Min)
解决了这个问题:
var text: String by rememberSaveable { mutableStateOf("") }
BasicTextField(
value = text,
onValueChange = {
text = it
},
modifier = Modifier.width(IntrinsicSize.Min)
)