Skip to content Skip to sidebar Skip to footer

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?"