java - TextWatcher 上的 Android 可编辑未正确附加
问题描述
我在我的 TextWatcher 上添加了一个千位分隔符
代码:
override fun afterTextChanged(s: Editable) {
var initial = s.toString()
if (!TextUtils.isEmpty(initial)) {
initial = initial.replace(".", "")
val formatSymbols = DecimalFormatSymbols()
formatSymbols.groupingSeparator = '.'
val formatter: NumberFormat = DecimalFormat("###,###,###", formatSymbols)
editText.removeTextChangedListener(this)
val myNumber = initial.toDouble()
val processed: String = formatter.format(myNumber)
s.clear()
s.append(processed)
editText.addTextChangedListener(this)
}
}
为了测试,我输入了数字 1000,它工作正常。它输出 1.000 输入 100000 并再次正常工作,输出为 100.000 出于某种原因,当我输入 1000000 时,处理后的变量为 1.000.000,但是当我附加到可编辑时,它附加为 1000.000
显示变量 Processed 的图像是正确的,但附加的结果不是
关于它为什么会发生的任何想法?
我可以直接设置edittext的文本,但这不是我现在的目标
解决方案
好的,所以代码确实可以正常工作。显然问题是我用于键盘的 InputType,它是:
InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
完全是我的坏
不知道如何制作键盘,使其仅显示数字,但使其与我正在使用的过滤器一起使用,但这至少是我可以解决的问题
感谢大家的帮助!
推荐阅读
- flutter - 从“media_picker_builder”包中访问项目
- typescript - 如何修复“x”可分配给“y”类型的约束,但“y”可以用约束“x”的不同子类型实例化
- sql - SQL - 将计划表与实际表与计划表中的日期标准合并。对于 Power BI
- angular - 无法以角度访问模型的获取功能
- javascript - 未安装使用条带的 Iban 元素
- javascript - 如何从 jQuery 日期选择器中的值中识别季度?
- javascript - 如何设置两个并排的div独立滚动?
- perl - 500 无法连接到 localhost:443(证书验证失败)
- python - 如何创建两个独立的彩色视频,包括移动和固定对象?
- javascript - 如何使用 JavaScript 过滤或显示 Spring Boot 中两个选定日期之间的数据?