4

有没有办法在 Jetpack Compose 中生成可调整大小的 BasicTextField,以便在用户输入或删除字符时它的宽度会换行文本大小?他们已经解决了类似的颤振问题,但我没有找到如何为 Compose 解决这个问题。 Flutter - 如何使 TextField 宽度适合其文本(“包装内容”)

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

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

4

2 回答 2

8

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

var text: String by rememberSaveable { mutableStateOf("") }
BasicTextField(
   value = text,
   onValueChange = {
       text = it
   },
   modifier = Modifier.width(IntrinsicSize.Min)
)
于 2021-05-28T09:10:02.977 回答
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我们输入更多 until 时,它会增长Dp.Infinity。(用于OutlinedTextField演示,但我们可以使用BasicTextField

在此处输入图像描述

于 2021-05-27T14:45:40.590 回答