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;}}





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 普法考试不过关怎么办 普法考试没及格怎么办 错过法宣考试怎么办 两套房改房不退怎么办 孩子初一政治差怎么办 学生上课老说话怎么办 一年级语文太差怎么办 二年级成绩不好怎么办 初中学生数学差怎么办 孩子数学计算能力差怎么办 股票没有客户号怎么办 五岁宝宝鼻炎怎么办 孩子怕老师家长怎么办 孩子得了厌学症怎么办 幼儿不好好吃饭怎么办 孩子在学校胆小怎么办 孩子胆小没自信怎么办 特别倔强的学生怎么办 初中生注意力不集中怎么办 父母水平太低怎么办 父母不肯买电脑怎么办 与父母性格不合怎么办 父母和孩子吵架怎么办 如果有孩子离婚怎么办 离婚时成年孩子怎么办 父母离婚后孩子怎么办 父母吵架闹离婚怎么办 父母吵架后冷战怎么办 家里每天都吵架怎么办 夫妻因为钱吵架怎么办 离婚了很痛苦怎么办 身份证丢了怎么办离婚 和老婆离婚了怎么办 老婆跟前任联系怎么办 离异小孩上户口怎么办 离婚之后孩子户口怎么办 父母离婚孩子户口怎么办 夫妻离婚孩子户口怎么办 孩子有心理阴影怎么办 孩子心里有障碍怎么办 初中的孩子厌学怎么办