Android EditText TextWatcher 只允许输入两位小数

class MyTextWatcher : TextWatcher {

        //保留两位小数
        private val digitsLength = 2

        override fun afterTextChanged(s: Editable?) {

            if (s.isNullOrEmpty()) {
                return
            } else {
                val text = s.toString().trim()
                val len: Int = s.toString().length
                //删除“.”后面超过2位后的数据
                if (text.contains(".")) {
                    if (len - 1 - text.indexOf(".") > digitsLength) {
                        s.delete(text.indexOf(".") + digitsLength + 1, len)
                    }
                }
                //如果"."在起始位置,则起始位置自动补0
                if (text.substring(0) == ".") {
                    s.insert(0, "0")
                }
                //如果起始位置为0,且第二位跟的不是".",则无法后续输入
                if (text.startsWith("0") && text.length > 1) {
                    if (s.toString().substring(1, 2) != ".") {
                        s.replace(0, len, "0.")
                    }
                }
            }

        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
    }

你可能感兴趣的:(Android EditText TextWatcher 只允许输入两位小数)