【问题标题】:BasicTextField maxlength Bug. If you go over the maximum length, BasicTextField doesn't work normallyBasicTextField 最大长度错误。如果超过最大长度,BasicTextField 将无法正常工作
【发布时间】:2022-01-06 00:48:27
【问题描述】:

我的代码

我尝试将长度限制为最多 30 个字符, 但如果我写了超过 30 个字符, 它将不再被输入或删除。这是为什么呢?

我想做的是创建一个类似于 xml 中的 EditText 的视图。

你想要的功能。

  • 提示
  • 最大长度

但是,Jetpack Compose TextField() 不支持以上两个函数。

@Composable
fun MyCustomEditText(
    placeholder: String = stringResource(id = "sample"),
) {
    var inputText by remember { mutableStateOf("") }

    BasicTextField(
        value = inputText,
        onValueChange = {if (it.length <= 30) inputText = it },
        singleLine = false,
        maxLines = 2,
        decorationBox = { innerTextField ->
            if (inputText.isEmpty()) { Text(text = placeholder)}
            innerTextField()
        }
    )
}

【问题讨论】:

  • 我运行了您的代码,如果我尝试输入超过 30 个字符,则会被阻止。当达到 30 个字符时,我也可以删除字符。那么究竟是什么问题呢?

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


【解决方案1】:
  1. 您可以使用TextFieldOutlinedTextField 来设置占位符。

例如:-

 TextField(
            value = someText,
            onValueChange = { someText = it },
            label = { Text("Simple TextField") }, // It will be shown on the top when focussed
            placeholder = { Text("Placeholder text") }, // It will be shown as hint when nothing is typed
          )
  1. 您提到您已将长度限制为 30 个字符,然后尝试写入超过 30 个字符。同样在代码中,我可以看到长度固定为 30 个字符 onValueChange = {if (it.length &lt;= 30) inputText = it } 的情况,所以我不确定如何输入超过 30 个字符。在此文本字段中。

【讨论】:

  • 请看上面提到的代码。
  • 为什么要设置这个? if (it.length &gt;= 30) { inputText = it.substring(0 until 29) } else { inputText = it } 你可以简单地使用旧的那有什么问题? onValueChange = {if (it.length &lt;= 30) inputText = it }
  • 没有可以限制长度的参数,所以我准备自定义使用。 TextField() or BasicTextField() * hint * maxLength 设置上述条件有没有更好的办法?
  • 对于你有占位符和 maxlength 的提示,你可以简单地使用这个:- onValueChange = {if (it.length &lt;= yourMaxLength) inputText = it } 如果文本大小更大 yourMaxLength 那么什么都不会发生,如果你按退格键,那么最后一个字符将是已删除。
  • 用你建议的代码限制最大长度为30个字符时,会出现以下现象。请检查链接。 drive.google.com/file/d/1sRhq6pCS3AWbQacYgtrWPGcDyUL_t34d/…
猜你喜欢
  • 2019-10-10
  • 2017-04-08
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
相关资源
最近更新 更多