您的位置:首页 > 移动开发 > Android开发

需求:EditText限制 输入20个字母。10个汉字

2017-02-25 20:10 302 查看
afterTextChanged方法。

private final int MAX_CHAR_NUM = 20;


mSearchEditText.addTextChangedListener(new SimpleTextWatcher() {

@Override

public void afterTextChanged(Editable s) {

int charSequenceCount = countChineseChar(s);

if (s.length() + charSequenceCount > MAX_CHAR_NUM) {

mSearchEditText.setText(s.subSequence(0, s.length() - 1));

return;

}

});

//计算中文字符

/**

* 计算中文字符

*

* @param sequence

* @return

*/

private int countChineseChar(CharSequence sequence) {

if (TextUtils.isEmpty(sequence)) {

return 0;

}

int charNum = 0;

for (int i = 0; i < sequence.length(); i++) {

char word = sequence.charAt(i);

if (StringUtils.isChineseChar(word)) {//中文

charNum++;

}

}

return charNum;

}

/**

* 判断是否是中文

* @param c

* @return

*/

public static boolean isChineseChar(char c) {

Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);

if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS

|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS

|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A

|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B

|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION

|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS

|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {

return true;

}

return false;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android