【问题标题】:how to measure the height of textField如何测量textField的高度
【发布时间】:2021-08-18 13:01:11
【问题描述】:

代码:

val focusManager = LocalFocusManager.current
var code by remember { mutableStateOf("") }
var money by remember { mutableStateOf("") }

Column() {
    Row() {
        TextField(
            modifier = Modifier.wrapContentSize(),
            value = code,
            keyboardOptions = KeyboardOptions(
                keyboardType = KeyboardType.Number,
                imeAction = ImeAction.Done
            ),
            keyboardActions = KeyboardActions(onDone = {
                focusManager.clearFocus()
            }),
            singleLine = true,

            label = { Text("Code") },
            onValueChange = { pscCode ->
                code = pscCode.filter { it.isDigit() }.take(16)
            })
        Button(modifier = Modifier.fillMaxWidth(),
            onClick = {…}
        )
        {
            Text("Save data")
        }
    }
    Row() {
        TextField(
            modifier = Modifier.wrapContentSize(),
            value = money,
            singleLine = true,
            keyboardOptions = KeyboardOptions(
                keyboardType = KeyboardType.Number,
                imeAction = ImeAction.Done
            ),
            keyboardActions = KeyboardActions(onDone = {
                focusManager.clearFocus()
            }),
            label = { Text("Money amount") },
            onValueChange = { moneyAmount ->
                money = moneyAmount
                    .trim()
                    .replace(",", ".")
                    .take(5)
            })

        Button(modifier = Modifier.fillMaxWidth(),
            onClick = {…}
        ) {
            Text("Clean data")
        }
    }
}

我一直在尝试将按钮的大小与 textFields 的大小相匹配,但我没有找到方法,我尝试测量 textBoxes 的高度(没有结果),有没有更好(并且有效)的方法填补这些空白? 在此先感谢:)

【问题讨论】:

    标签: android kotlin layout android-jetpack android-jetpack-compose


    【解决方案1】:

    使用intrinsic measurements

       Row(Modifier.height(IntrinsicSize.Min)) {
                TextField( /* your code */)
                Button(
                    modifier = Modifier.fillMaxHeight(),
                    onClick = {}
                )
                {
                    Text("Save")
                }
            }
    

    如文档中所述:

    Row 可组合的 minIntrinsicHeight 将是其子代的最大 minIntrinsicHeightButton 元素的minIntrinsicHeight0,因为如果没有给定约束,它不会占用空间; TextField minIntrinsicHeight 将是给定特定宽度的文本。因此,Row 元素的高度约束将是TextField 的最大minIntrinsicHeight。然后Button 会将其高度扩展到Row 给出的高度约束。

    【讨论】:

      【解决方案2】:

      菲利普的回答也应该这样做。

      另一种解决方法

      var textFieldHeight: Dp
      
      BoxWithConstraints(Modifier.wrapContentSize()) {
      
       TextField()
       textFieldHeight = maxHeight
      
      }
      

      【讨论】:

        猜你喜欢
        • 2020-06-12
        • 2018-10-28
        • 1970-01-01
        • 2015-10-28
        • 2021-06-14
        • 1970-01-01
        • 2019-10-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多