设置长度字符 Emoji Edittext Android Kotlin

set length character Emoji Edittext Android Kotlin

我有 1 个 edittext maxLength = 30,但我只能输入 6 个字符的表情符号狗 => 1 个表情符号狗 = 6 个常规字符。所以请帮我输入 30 个表情符号狗。谢谢大家。
[在此处输入图片描述][1]

当有人输入表情符号时,您可以对该表情符号调用 .length,然后按该数量增加您的最大字符数。 (如果你想隐藏魔法,你必须记住你原来的字符数并在你的 UI 上使用它)。

即当有人输入“狗”时,您将最大计数从 30 增加到 35。(已使用 1,狗通常算作 6)

参考:

  1. https://twitter.com/riggaroo/status/1148278279713017858
  2. https://developer.android.com/reference/java/text/BreakIterator
  3. https://lemire.me/blog/2018/06/15/emojis-java-and-strings/
  4. https://developer.android.com/reference/kotlin/androidx/emoji/text/EmojiCompat
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)
                }
            }
        })