How To Limit Numbers After Dot In Edittext?
I tried this: EditText.filters = arrayOf(InputFilter.LengthFilter(7),DecimalDigitsInputFilter(2)) But it doesn't work. DecimalDigitsInputFilter is unresolved re
Solution 1:
Try this code:
val input = EditText(this)
var count = -1
input.setRawInputType(InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL)
input
//input.hint = "$"
input.filters = arrayOf(InputFilter.LengthFilter(7))
input.addTextChangedListener(object : TextWatcher {
overridefunbeforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
//TODO("Not yet implemented")
}
overridefunonTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
// TODO("Not yet implemented")
}
overridefunafterTextChanged(arg0: Editable?) {
if (arg0!!.length > 0) {
val str: String = input.getText().toString()
input.setOnKeyListener(object : DialogInterface.OnKeyListener, View.OnKeyListener {
overridefunonKey(p0: DialogInterface?, keyCode: Int, p2: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_DEL) {
count--
val fArray = arrayOfNulls<InputFilter>(1)
fArray[0] = LengthFilter(7)
input.setFilters(fArray)
}
returnfalse
}
overridefunonKey(p0: View?, p1: Int, p2: KeyEvent?): Boolean {
if (p1 == KeyEvent.KEYCODE_DEL) {
count--
val fArray = arrayOfNulls<InputFilter>(1)
fArray[0] = LengthFilter(7)
input.setFilters(fArray)
}
returnfalse
}
})
val t = str[arg0.length - 1]
if (t == '.') {
count = 0
}
if (count >= 0) {
if (count === 2) {
val fArray = arrayOfNulls<InputFilter>(1)
fArray[0] = LengthFilter(arg0.length)
input.setFilters(fArray)
}
count++
}
}
}
}
)
Let me know if this works.
Post a Comment for "How To Limit Numbers After Dot In Edittext?"