我有一个需求,需要限制在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的最大字符数限制吗?同时要能够接受表情字符。