限制EditText输入中英文Emoji表情字符个数
来源:互联网 发布:网络攻防web 编辑:程序博客网 时间:2024/05/14 15:10
中文和Emoji表情占两个字符,其他的占一个字符~
首先先编写一个过滤器,限制EditText可输入的最大字符数。
为什么不用.MaxLeng呢?因为这个属性的话,中文,英文都算一个字符。所以不符合我们的要求~
public class EditTextFilter implements InputFilter { int MAX_EN;// 最大英文/数字长度 一个汉字算两个字母 String regEx = "[\\u4e00-\\u9fa5]"; // unicode编码,判断是否为汉字 public EditTextFilter(int mAX_EN) { super(); MAX_EN = mAX_EN; } @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { int destCount = dest.toString().length() + getChineseCount(dest.toString()); int sourceCount = source.toString().length() + getChineseCount(source.toString()); if (destCount + sourceCount > MAX_EN) { return ""; } else { return source; } } private int getChineseCount(String str) {//获取中文个数 int count = 0; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); while (m.find()) { for (int i = 0; i <= m.groupCount(); i++) { count = count + 1; } } return count; }}
下面通过接口,实现类似QQ个性签名的效果,显示剩余可输入的字符数。
新建一个工具类 EditTextWatcher
定义一个接口,拿到剩余可输入的字符数
public interface EditTextWhaterListener{ void getSurplusNum(String s);}
初始化方法,传需要限定的EditText,最大字符数过来
public void init(EditText editText,int MaxChar,EditTextWhaterListener listener){ EditTextFilter[] nameLengthFilter2 = {new EditTextFilter(MaxChar)}; editText.setFilters(nameLengthFilter2); this.maxNum=MaxChar; this.listener=listener; editText.addTextChangedListener(textWatcher);}
public void init(EditText editText,int MaxChar){ EditTextFilter[] nameLengthFilter2 = {new EditTextFilter(MaxChar)}; editText.setFilters(nameLengthFilter2);}
editText.setFilters(nameLengthFilter2);
public TextWatcher textWatcher=new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { int EngNum=s.length()-getChineseCount(s.toString()); int CnNum=getChineseCount(s.toString())*2; listener.getSurplusNum((maxNum-EngNum-CnNum)+"");//剩余可输入的字符数 } @Override public void afterTextChanged(Editable s) { }};监听器
private int getChineseCount(String str) { int count = 0; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); while (m.find()) { for (int i = 0; i <= m.groupCount(); i++) { count = count + 1; } } return count;}获取中文个数
EditTextWatcher editTextWatcher = new EditTextWatcher();editTextWatcher.init(edtSgignature, 50, new EditTextWatcher.EditTextWhaterListener() { @Override public void getSurplusNum(String s) { tip.setText("还可输入"+s+"字"); }});
使用~
非常简单
1 0
- 限制EditText输入中英文Emoji表情字符个数
- EditText限制输入emoji表情总结
- Android中限制EditText中输入Emoji表情e
- EditText 添加限制Emoji表情
- Android EditText 不能输入 手机输入法自带 Emoji 表情,为EditText 添加输入限制
- 限制EDITTEXT可输入的字符个数
- EditText禁止输入Emoji表情的处理
- 不支持输入Emoji表情的EditText
- 限制EditText输入字符
- editText限制输入字符长度,禁止输入表情,清除输入文字的按钮
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- 【Android】【输入校验】输入框(EditText)过滤 Emoji 表情
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- android 输入框EditText禁止输入Emoji表情符
- EditText输入框禁止输入Emoji表情符
- PHP中字符串处理函数
- SQL之存储过程
- 有关Android 6.0权限问题java.lang.SecurityException: Permission Denial
- C语言(Bug) warning: this program uses gets(), which is unsafe.
- 企业对邮件服务器常见需求及解决之道
- 限制EditText输入中英文Emoji表情字符个数
- 用css实现背景渐变
- 封装微信分享到朋友/朋友圈js
- day11_Python队列
- 全文检索的实现方式
- code:block运行遇到It seems that this project has not been built yet.问题解决
- UILable的对齐方式(上对齐,下对齐,默认只能中间对齐)
- HTML+CSS基础课程之包含(后代)选择器
- 1004. Counting Leaves (30)