Android(安卓)EditText限制输入文本只能是中文
16lz
2021-01-26
以前可能更多的是让edittext设置成只允许输入英文和特殊符号,因为一般都是输入密码的时候要这么限定,这次需要只让edittext输入中文,这里用InputFilter来过滤输入文字
InputFilter inputFilter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if (!isChinese(source.charAt(i))) { ToastUtils.show("只能输入汉字"); return ""; } } return null; } };editText.setFilters(new InputFilter[]{inputFilter});
那么如何判断是否是中文呢,也就是要排除英文、特殊字符、标点、表情等,这里通过unicode编码标准来判断(中、日、韩
三国的象形文字的Unicode编码)
private boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); // 4E00-9FBF:CJK 统一表意符号 if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS //F900-FAFF:CJK 兼容象形文字 || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS //3400-4DBF:CJK 统一表意符号扩展 A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A //2000-206F:常用标点 || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION //3000-303F:CJK 符号和标点 || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION //FF00-FFEF:半角及全角形式 || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false;}
判断每一个char是否是汉字
大功告成
更多相关文章
- android 编译facebook/fresco图片库
- 关于Android的问号(?)和 @符号的用法
- ELF文件查看利器之objdump用法
- AndroidLinker与SO加壳技术
- Android开发——实现Android简易计算器
- Android--hw_get_module解析
- Android(安卓)Native/Tombstone Crash Log 详细分析
- ELF文件查看利器之readelf用法
- android下调用隐藏源码的问题