Search code examples
androidstringkotlinandroid-edittextemoji

set length character Emoji Edittext Android Kotlin


i have 1 edittext maxLength = 30, but i can only type 6 character emoji dog => 1 emoji dog = 6 regular character. So please help me type 30 emoji dog. Thanks everyone.
[enter image description here][1]


Solution

  • editText.addTextChangedListener(object : TextWatcher {
                override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {
                    oldTextString = charSequence.toString()
                }
    
                override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
                override fun afterTextChanged(editable: Editable) {
                    var newTextString = editable.toString()
                    if (!oldTextString.equals(newTextString)) {
                        if (Character.codePointCount(
                                newTextString,
                                0,
                                newTextString.length
                            ) > maxCharactersAllowed
                        ) {
                            newTextString = oldTextString
                        }
                        editText.setText(newTextString)
                        editText.setSelection(newTextString.length)
                    }
                }
            })