如何在允许表情符号输入的情况下限制edittext中的最大字符?

时间:2017-11-27 07:35:46

标签: android android-edittext emoji maxlength

我有一个要求,我需要限制在EditText中输入的字符数。我知道使用我的.xml布局文件中的EditText属性android:maxLength可以很容易地实现这一点。

但我的问题是我的EditText也应该允许用户输入表情符号。现在的问题是,一些表情符号的长度有时为2或有时为1.因此, android:maxLength = 1 不允许输入长度为2的表情符号。

我可以使用Character类的方法获得正确的字符串长度(每个表情符号计为1):

Character.codePointCount(charSequence.toString(), 0, charSequence.toString().length())

我尝试使用InputFilter,如下所示:

InputFilter inputFilter = new InputFilter() {
            @Override
            public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {
                if (Character.codePointCount(charSequence.toString(), 0, charSequence.toString().length()) <= maxCharactersAllowed) {
                    return null;
                } else {
                    return "";
                }
            }
        };

但是charSequence返回给了我明文和表情符号文本的奇怪结果,所以我用来比较长度的字符串给出了奇怪的结果。

有人可以帮我正确实施EditText接受表情符号字符的最大字符数限制吗?

1 个答案:

答案 0 :(得分:2)

谢谢,Joe。在你的帮助下,我找到了这样的解决方案:

var users = NOSQL('db');

users.find().filter(doc => doc.name === 'Report' && doc.entries && doc.entries[0] && doc.entries[0].name === 'Report').callback(function(err, model) {
    console.log(err, model);
});