Android EditText 让编辑框只能输入汉字
2016-12-23 13:13
417 查看
转载请标明出处:http://blog.csdn.net/lx_asymmetric/article/details/53838165
最近在项目中,有遇到“让编辑框只能输入汉字”这种需求,然后上网看了一下,解决方法大致是两种,一种是自定义了一个EditText,然后重写commitText方法,实现限制输入汉字的方法,例如:
另一种是在所有的输入都完成后,检查EditText里面的字符是否都是汉字,这种就不举例了。
其实实现这种需求还有第三种方式,通过使用Android源码中的InputFilter接口可以非常简单的实现这个功能。
最后放出DEMO位置:点击前往
最近在项目中,有遇到“让编辑框只能输入汉字”这种需求,然后上网看了一下,解决方法大致是两种,一种是自定义了一个EditText,然后重写commitText方法,实现限制输入汉字的方法,例如:
/** * 对输入的内容进行拦截 * * @param text * @param newCursorPosition * @return */ @Override public boolean commitText(CharSequence text, int newCursorPosition) { // 只能输入汉字 if (!isChinese(text.toString())) { return false; } return super.commitText(text, newCursorPosition); }
另一种是在所有的输入都完成后,检查EditText里面的字符是否都是汉字,这种就不举例了。
其实实现这种需求还有第三种方式,通过使用Android源码中的InputFilter接口可以非常简单的实现这个功能。
InputFilter filter = new InputFilter() { 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))) { return ""; } } return null; } };实现接口中的filter方法,然后把它设置到EditText组件上,就可以实现此需求了。
et_chinese.setFilters(new InputFilter[]{filter});然后InputFilter接口中还有个静态类LengthFilter可以实现对编辑框输入字符数量的控制。
//如果想要再实现输入字符数量的限制,可以这么写,如果限制字符数为6,就在LengthFilter中传入参数6 et_chinese.setFilters(new InputFilter[]{filter, new InputFilter.LengthFilter(6)});代码中的isChinese方法来自:点击打开链接
/** * 判定输入汉字 * * @param c * @return */ public static boolean isChinese(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.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false; }
最后放出DEMO位置:点击前往
相关文章推荐
- Android EditText 让编辑框只能输入中文汉字
- android 利用正则表达式 控制edittext只能输入数字、英文、汉字
- android使用正则表达式控制EditText只能输入数字和英文
- android EditText 只能输入无法删除的解决方法
- Android设置EditText只能输入数字,不包含小数点
- android 判断EditText中输入的值是数字、字母还是汉字的方法
- android 中怎么控制EditText只能输入数字和字母?
- Android EditText 只能输入三行文本的实现方法
- android edittext只能输入字母和数字,默认弹出英文输入法
- android EditText设置只能输入金额
- Android EditText 让编辑框只能输入中文汉字
- Android EditText监听小数点让用户只能输入小数点后两位
- android的edittext设置输入限制,只能输入数字
- EditText只能输入汉字
- Android之EditText只能输入数字或自定义字符
- Android中EditText限制只能输入 电话号码 字母 邮箱地址
- Android EditText监听小数点让用户只能输入小数点后两位
- Android EditText监听小数点让用户只能输入小数点后两位
- Android EditText设置只能输入数字和小数点
- Android EditText监听只能输入2位小数