i want to set value limit in edittext not character limit in edit text. like when i enter 100 it is entered or set max length 3. when i enter 30 it set max length 2 when i enter 4 then set max length 2 when i enter 2 then set max length 3
these all about number but in decimal(.) can't be enter first time or it can't be enter twice and after decimal it contain 2 value. example 100.00 entered 200.00 entered 30.745 not entered(set max length 2 after decimal)
Edit text code
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) {
}
}
Extension file
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))
}