EditText输入字符数控制
来源:互联网 发布:淘宝内衣买家真人秀 编辑:程序博客网 时间:2024/05/17 03:09
为EditText设置Filter
EditText et = (EditText) view.findViewById(R.id.name_et);InputFilter[] filters = {new AdnNameLengthFilter()};name_et.setFilters(filters);其中,AdnNameLengthFilter继承自InputFilter
import android.text.InputFilter;import android.text.Spanned;/** * EditText设置最大可输入字符数(中文占2字符,英文占1字符) * @author Administrator * */public class AdnNameLengthFilter implements InputFilter {// 最大字符数int max = 10;/** * CharSequence source, //输入的文字 * int start //开始位置 * int end //结束位置 * Spanned dest //当前显示的内容 * int dstart //当前开始位置 * int dend //当前结束位置 */@Overridepublic CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) {int source_count = countChinese(source.toString());//刚输入的字符中所含中文字符数int dest_count = countChinese(dest.toString());//已存在字符中所含中文字符数int keep = max - dest_count - (dest.length() - (dend - dstart)) ;//还能输入的字符数if (keep <= 0) {//字符数满return "";} else if (keep - source_count >= end - start ) {//加入新字符后字符数未满return null; // keep original} else {//加入新字符后字符数超char[] ch = source.toString().toCharArray();int k = keep;keep = 0;for(int i = 0; i < ch.length; i++){if(isChinese(ch[i])){k = k - 2;}else{k--;}keep ++ ;if(k <= 0){break;}}return source.subSequence(start, start + keep);}}/** * 判断是否为中文 * @param c * @return */private static final 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;}/** * 计算字符串中中文字符数 * @param strName * @return */int countChinese(String strName){int count = 0;char[] ch = strName.toCharArray();for (int i = 0; i < ch.length; i++) {char c = ch[i];if (isChinese(c)) {count ++;}}return count;}}
- EditText输入字符数控制
- EditText输入字符控制(二)
- android 限制edittext 最大输入字符数
- EditText限制输入字符类型和限制输入字符数
- textarea 控制输入字符字节数
- js控制文本框输入的字符数
- EditText 输入控制,用InputFilter过滤表情、特殊字符
- Android统计当前输入字符数,限制edittext输入字符数
- android 限制 EditText 最大输入字符数并显示已经输入字符数
- android 中如何限制 EditText 最大输入字符数
- android 中如何限制 EditText 最大输入字符数(2)
- android 中如何限制 EditText 最大输入字符数
- android 中如何限制 EditText 最大输入字符数
- android 中如何限制 EditText 最大输入字符数
- android 中如何限制 EditText 最大输入字符数
- android 中如何限制 EditText 最大输入字符数
- android 中如何限制 EditText 最大输入字符数
- android开发(十六) 如何限制 EditText 最大输入字符数
- 发现一学习ria flex 的网站,推荐一下 www.riaedu.com
- 28发生大幅
- 29
- 如何用正则表达式截取字符串
- ARM Linux 下增加系统调用(不推荐的方法)
- EditText输入字符数控制
- 孤独,不是郁闷的理由
- 30
- string和cstring和char的互相转换
- 31
- windows XP系统下添加网络打印机
- 【I/O】Character Streams
- memecache客户端的解析
- 图像编辑之对比度调整(亮度对比度的算法公式) .