【问题标题】:How to remove keyboard flicker when switching between TextFields?在 TextField 之间切换时如何消除键盘闪烁?
【发布时间】:2021-12-18 23:15:33
【问题描述】:

我有一个 LazyColumn 由带有数字输入的文本字段组成。当我在文本字段之间切换时,有时会看到闪烁。它首先打开普通文本键盘,然后切换到数字键盘。这导致了非常糟糕的用户体验。

我的代码:

LazyColumn {
    items(payers) {
        Row {
            Image(...)
            Text(...)
            Box(
                contentAlignment = Alignment.Center,
                modifier = Modifier
                    .border(1.dp, Color.Gray, RoundedCornerShape(4.dp))
                    .padding(vertical = 4.dp)
            ) {
                BasicTextField(
                    value = it.amount,
                    onValueChange = { /* Update it.amount */ },
                    keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
                )
                if (it.amount.isEmpty())
                    Text(
                        text = "₹ 0",
                        modifier = Modifier.alpha(0.5f)
                    )
            }
        }
    }
}

结果:


如何避免这种闪烁?

【问题讨论】:

  • 是的,实际上我现在很困,所以现在,试试吧,而不是使用默认的 KeyBoardType.Number,尝试将其配置为只允许一组数字,例如“12345667890”。
  • 我不想向用户显示字母,然后限制他们输入这些内容
  • 如何在撰写文本字段中“允许”某些字符?不要说“在触发 onValueChange 时过滤掉那些”。我认为这不会改变键盘类型

标签: android kotlin android-jetpack-compose android-jetpack-compose-text android-compose-textfield


【解决方案1】:

这看起来像是一个已知的错误(具体来说,键盘类型在焦点请求期间变化非常快)。

您可以关注on the bug tracker 以获取更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    相关资源
    最近更新 更多