【发布时间】:2018-05-10 09:25:24
【问题描述】:
我有一个要求,我需要限制在 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 接受表情符号字符的最大字符数的限制吗?
【问题讨论】:
-
尝试使用
TextWatcher进行edittext并实现onTextChanged中的代码 -
我在这里回答了这个问题你可以试试Link
标签: android android-edittext emoji maxlength