我想在edittext中设置值限制,而不是在编辑文本中设置字符限制。就像当我输入100时,它被输入或设置为最大长度3。当我输入30时,它设置了最大长度2当我输入4,然后设置最大长度2当我输入2,然后设置最大长度3
这些都是关于数字的,但以十进制(.(表示,不能第一次输入,也不能两次输入小数后包含2个值。实例输入100.00输入200.0030.745未输入(十进制后设置最大长度2(
编辑文本代码
ed_weight.onChange {
try {
if (it.startsWith(".")) {
ed_weight.limitLength(1)
} else if (it.toFloat() >= 30.00) {
if (it.contains(".")) {
var len = it.indexOf('.')
ed_weight.limitLength(len + 3)
} else {
ed_weight.limitLength(2)
}
} else if (it.toFloat() < 299.00) {
if (it.contains(".")) {
var len = it.indexOf('.')
ed_weight.limitLength(len + 3)
} else {
ed_weight.limitLength(3)
}
} else {
ed_weight.limitLength(3)
}
} catch (e: Exception) {
}
}
扩展文件
fun EditText.onChange(cb: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
cb(s.toString())
}
})
}
fun EditText.limitLength(maxLength: Int) {
filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
尝试android:maxLength="3">
参考编号:http://androidblogger.blogspot.com/2009/01/numeric-edittext-and-edittext-with-max.html