0

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?

GrandPC
  • 31
  • 6
  • [How to round a number to n decimal places in Java](https://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java). In short create a custom Input Filter . – ADM Jul 13 '21 at 04:51
  • I know this, but how can I apply it for editText? – GrandPC Jul 13 '21 at 04:53

1 Answers1

0

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.

Levi
  • 187
  • 2
  • 17
Umesh Yadav
  • 1,042
  • 9
  • 17
  • Thanks, but it doesn't. `setRawInputType``addTextChangedListener``setOnKeyListener`:unresolved reference – GrandPC Jul 13 '21 at 04:37