【发布时间】:2021-04-30 20:52:21
【问题描述】:
我在 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,但是当我附加到 Editable 时,它附加为 1000.000
显示变量 Processed 的图像是正确的,但附加的结果不正确
关于它为什么会发生的任何想法?
我可以直接设置edittext的文本,但这不是我现在的目标
【问题讨论】:
-
我测试了你的代码,它工作正常,如果你的问题还没有解决,请添加你的xml和更多细节。
标签: java android kotlin textwatcher