I tried this:
EditText.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(7),DecimalDigitsInputFilter(2))
But it doesn't work. DecimalDigitsInputFilter
is unresolved reference. Any ideas on how to limit?
I tried this:
EditText.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(7),DecimalDigitsInputFilter(2))
But it doesn't work. DecimalDigitsInputFilter
is unresolved reference. Any ideas on how to limit?
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 {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
//TODO("Not yet implemented")
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
// TODO("Not yet implemented")
}
override fun afterTextChanged(arg0: Editable?) {
if (arg0!!.length > 0) {
val str: String = input.getText().toString()
input.setOnKeyListener(object : DialogInterface.OnKeyListener, View.OnKeyListener {
override fun onKey(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)
}
return false
}
override fun onKey(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)
}
return false
}
})
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.