EditeText的maxlength中文、字符长度限制
来源:互联网 发布:快压mac版 编辑:程序博客网 时间:2024/05/01 09:17
一直以为在xml布局文件中对EditText添加 android:maxLength="30";属性是控制EditText字符数的。想当然的以为一个中文占2个字符,一个英文占1个字符。结果的结果当然不是了。
确切的说来android:maxLength="30"是对EditText的字数进行控制的。不管中文还是英文。都是30个字。这下麻烦了,查了整个API就没发现有真正是对字符进行控制的。最后发现只能用自定义的InputFilter来实现
package com.example.inputfilterdemo; import java.util.regex.Matcher;import java.util.regex.Pattern; import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.InputFilter;import android.text.Spanned;import android.text.TextWatcher;import android.util.Log;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast; /** * * ClassName:MainActivity * * @author Jerome Song * @version * @since Ver 1.1 * @Date 2013 2013-4-4 下午2:55:42 * * @see */public class MainActivity extends Activity { private EditText etTest; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { etTest = (EditText) findViewById(R.id.et_test); InputFilter[] filters = { new NameLengthFilter(16) }; etTest.setFilters(filters); } private class NameLengthFilter implements InputFilter { int MAX_EN;// 最大英文/数字长度 一个汉字算两个字母 String regEx = "[\\u4e00-\\u9fa5]"; // unicode编码,判断是否为汉字 public NameLengthFilter(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) { Toast.makeText(MainActivity.this, getString(R.string.count), Toast.LENGTH_SHORT).show(); 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; } } }
0 0
- EditeText的maxlength中文、字符长度限制
- 限制字符串的长度,maxlength不起作用
- 如何限制textBox输入字符长度?MaxLength属性一下搞定!
- JS 文本框 maxlength(中文字符长度) 解决方案
- textField限制中文字符长度
- UITextField限制中文输入下的字符长度
- UITextField中文输入法输入时对字符长度的限制
- c# 限制textbox的输入范围和长度(长度不用maxlength方法)
- 限制TextView的字符长度
- UITextField基本概念&&限制字符的输入长度(包括中文字符)
- maxlength长度
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS textFiled中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- iOS:UITextField中文输入法输入时对字符长度的限制
- 限制UITextField和UITextView的中英文输入长度(中文占两个字符)
- 反射练习
- SDWebImage添加header
- C#第4周实验
- 将字符串中进行反转。abcde --> edcba
- iOS 多线程自己的理解
- EditeText的maxlength中文、字符长度限制
- 关于 jQuery,什么叫隐式迭代(implicit iteration)?
- 使用TCP协议写一个可以上传文件的服务器和客户端
- Android面试回忆录
- 利用資源分割優化iOS包裝大小
- orcale基本函数1_--NULL值校验
- 从无到有系列之Hive-入门操作及简单应用02
- Java微信公众平台开发【番外篇】(七)——公众平台测试帐号的申请
- Tcp上传文件 服务器端