需求:EditText限制 输入20个字母。10个汉字
2017-02-25 20:10
302 查看
afterTextChanged方法。
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;
}
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;
}
相关文章推荐
- EditText限制只能输入汉字字母和空格
- Android:限制EditText中只可以输入字母和数字
- Android中EditText限制仅允许输入汉字/仅允许汉字和数字
- Android限制输入框10个汉字或20个字母完美实现
- Android学习笔记 —— Android 开发中,限制 EditText 输入框不能输入中文(汉字)
- EditText限制不能输入空格,汉字和字符不超过28
- Android中EditText限制只能输入 电话号码 字母 邮箱地址
- android 判断EditText中输入的值是数字、字母还是汉字
- android 判断EditText中输入的值是数字、字母还是汉字的方法
- EditText 限制只能输入字母和数字,并且字母自动大写
- Android EditText输入限制最大字符长度 和 限制只能输入数字和字母(包含大小写)
- EditText设置输入的类型,比如说限制只能输入字母和数字
- Edittext限制输入汉字50英文100
- EditText限制输入类型 - 只能输入大小写字母和数字
- Android EditText 限制输入数字和字母设置
- 限制EditText只输入数字和字母
- android 判断EditText中输入的值是数字、字母还是汉字的方法
- Edittext 限制只能输入数字和字母
- 限制EditText只能输入数字和字母
- android开发(十六) 如何限制 EditText 最大输入字符数