Android 实现限制EditText输入文字的数量
前段时间比较忙 没来的及时分享出来.需求是这样的要求用户只能输入12个字符或者6位中文的数据:作为一个菜鸟遇到这样的问题第一反应就是 Android:maxLength="12"这么个属性然而去测试发现中文也是十二个的瞬间被上司叫过去就是一顿说。没办法还得改方法可是作为菜鸟的我只知道这一个方法;只能去百度了打开百度以后发现大部分方法都是一样都是用editText.addTextChangedListener()这个方法处理的;可是作为菜鸟的我对于这方法还是不熟悉于是运行过程中出现了各种问题。。几近周折还是没解决,时间实在赶没办法换个方法于是找到了这个方式editText.setFilters( new InputFilter[]{new InputFilter.LengthFilter(MAX_LENGTH) });一开始也是一对问题直到在http://www.android100.org/html/201406/03/16568.html网站找到了这么个方法
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 ( !Character.isLetterOrDigit(source.charAt(i)) && !Character.toString(source.charAt(i)) .equals("_") && !Character.toString(source.charAt(i)) .equals("-")) {
return "";
}
}
return null;
}
};
mEditText.setFilters(new InputFilter[]{new InputFilter() {
// 这个方法,返回空字符串,就代表匹配不成功,返回null代表匹配成功
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
// 获取字符个数(一个中文算2个字符)
if (getTextLength(dest.toString())
+ getTextLength(source.toString()) >= MAX_LENGTH) {
return "";
}
return null;
}
}});
getTextLength(String text);方法
/**
* 获取字符数量 汉字占2个,英文占一个
*
* @param text
* @return
*/
public static double getTextLength(String text) {
double length = ;
for (int i = ; i < text.length(); i++) {
// text.charAt(i)获取当前字符是的chart值跟具ASCII对应关系255以前的都是英文或者符号之等而中文并不在这里面所以此方法可行</span>
if (text.charAt(i) > ) {
length += ;
} else {
length++;
}
}
return length;
}
- mEditText.setFilters(new InputFilter[]{new InputFilter() {
- // 这个方法,返回空字符串,就代表匹配不成功,返回null代表匹配成功
- @Override
- public CharSequence filter(CharSequence source, int start, int end,
- Spanned dest, int dstart, int dend) {
- // 获取字符个数(一个中文算2个字符)
- if (getTextLength(dest.toString())
- + getTextLength(source.toString()) >= MAX_LENGTH) {
- return "";
- }
- return null;
- }
- }});
- /**
- * 获取字符数量 汉字占2个,英文占一个
- *
- * @param text
- * @return
- */
- public static double getTextLength(String text) {
- double length = 0;
- for (int i = 0; i < text.length(); i++) {
- <span style="white-space:pre"> </span>//<span style="font-family: 'Microsoft YaHei', 微软雅黑, 'Microsoft JhengHei', 华文细黑, STHeiti, MingLiu;">text.charAt(i)获取当前字符是的chart值跟具ASCII对应关系255以前的都是英文或者符号之等而中文并不在这里面所以此方法可行</span>
- if (text.charAt(i) > 255) {
- length += 2;
- } else {
- length++;
- }
- }
- return length;
- }
代码还有进步的空间有什么问题请及时提出
- 顶
- 0
- 踩
- 0
我的同类文章
- •Android 继承SwipeRefreshLayout添加上拉加载事件2015-10-10阅读128
- •android 小米手机弹出框(自定义dialog)位置不居中解决方法2015-07-31阅读494
- •android 数据存储技术(1/4)androidSQLite数据库存储2015-05-05阅读105
- •android 数据存储技术(1/4)android中sharedPreferences2015-04-24阅读155
- •Android ViewPager多页面滑动切换以及动画效果2015-07-31阅读136
- •android 数据存储技术(1/4)android中网络存储2015-05-05阅读96
- •android 数据存储技术(1/4)文件存储2015-04-24阅读159
- •android圆形头像的选择和剪切并存储出圆形图片2015-03-04阅读775
参考知识库

-
Android知识库
20802关注|1808收录
- 猜你在找
- 用 户 名:
- firelightdragon
- 评论内容:

核心技术类目
Android 实现限制EditText输入文字的数量的更多相关文章
- Android实现限制EditText输入文字的数量
一: 声明控件. TextView hasnumTV; TextView hasnum;// 用来显示剩余字数 int num = 50;// 限制的 ...
- android技巧:EditText输入错误时该怎样提示用户
验证用户输入内容(EditText)应该及时准确的告诉用户,那么在Android系统中提示用户通常有以下做法: 1) 使用Toast提示 1 Toast.makeText(this, "邮箱 ...
- Android监听EditText输入字符串,删除指定的字符
alert_ed = (EditText) a.findViewById(R.id.alert_ed_queue_num); alert_ed.addTextChangedListener(mText ...
- Android控件之EditText(输入文本框控件)
一.EditText控件概述 EditText是一个非常重要的组件,可以说他是用户和Android应用进行数据传输窗口 有了他就等于有了一扇和Android应用传输的门,通过他用户可以把数据传输给A ...
- Android编程 EditView 中如何设置最多可以输入的字符数量 属性 android:ems 与 android:maxLength 的区别
最近有一个新的感悟,那就是工作的时候千万不要遇到那种特要人无语的领导,很不幸我现在就遇到了这样的一个领导,说是要给领导认识的一个熟人家的孩子写本科毕业设计预算把我给派过去给本科生写毕业设计,这事情的确 ...
- android代码设置EditText只输入数字、字母
如何设置EditText,使得只能输入数字或者某些字母呢? 一.设置EditText,只输入数字: 方法1:直接生成DigitsKeyListener对象就可以了. et_1.setKeyLis ...
- Android EditText输入字数限制总结(包含中文输入内存溢出的解决方法)
转载请注明,大飞:http://blog.csdn.net/rflyee/article/details/38856539 限定EditText输入个数的解决方式非常多,可是一般主要考虑两点.也就是处 ...
- android中实现在矩形框中输入文字,可以显示剩余字数的功能
虽然这两个功能都比较简单,但是在实际app开发中真的很常见,特别是显示字数或剩余字数这个功能 如下图: 要实现上面的功能,需要做到三点: 1.实现矩形框布局 思路就是矩形框作为整个布局的一个backg ...
- Android EditText输入格式设置
在开发的过程中,通常会用到EditText,如何让虚拟键盘来适应输入框中内容的类型,通常我们都会在xml文件中加入android:inputType="". android:inp ...
随机推荐
- VNC Server模拟攻击实战
VNC目前已被广泛应用的一个远程控制程序,很多攻击者对VNC的攻击技术研究热情是高涨的,丝毫不亚于对Windows的远程桌面(3389).PcAnywhere的攻击研究.从最开始爆发出来的VNC的低版 ...
- Android 多线程断点续传同时下载多个大文件
最近学习在Android环境中一些网络请求方面的知识,其中有一部分是关于网络下载方面的知识.在这里解析一下自己写的demo,总结一下自己所学的知识.下图为demo的效果图,仿照一些应用下载商城在Lis ...
- Docker 搭建java+tomcat
1. 准备java和tomcat的软件包 jdk-7u79-linux-x64.tar.gz apache-tomcat-7.0.57.tar.gz 2. 编辑Dockerfile 文件 vim Do ...
- C++ Traits 技术
Tarits.特性的复数. c++萃取技术就是指它. 实现方式是模板特化. STL中涉及到iterator的地方常常能用到它. gcc的STL与VS的STL略有区别. vs中下列代码,把鼠标放在ite ...
- 关于查看域名A记录,MX记录,CNAME记录-NSLOOKUP用法介绍
关于查看域名A记录,MX记录,CNAME记录-NSLOOKUP用法介绍 用ping查看域名的IP地址,这样只能查到域名的A记录,要查询域名的MX记录.CNAME记录或NS记录,可用nslookup命令 ...
- Rotation--控件位置旋转
今天想要完成一个按钮的动画,也就是随着手势在屏幕上的滑动,让按钮图片跟着旋转.刚开始的思路是,先把图片旋转以后,在把这个图片设置为imagebutton的背景.不过,会发现这个图片经过处理以后一直变形 ...
- Docker---(8)Docker启动Redis后访问不了
原文:Docker---(8)Docker启动Redis后访问不了 版权声明:欢迎转载,请标明出处,如有问题,欢迎指正!谢谢!微信:w1186355422 https://blog.csdn.net/ ...
- COGS——C 14. [网络流24题] 搭配飞行员
http://cogs.pro/cogs/problem/problem.php?pid=14 ★★☆ 输入文件:flyer.in 输出文件:flyer.out 简单对比时间限制:1 s ...
- POJ 3723 Conscription MST
http://poj.org/problem?id=3723 题目大意: 需要征募女兵N人,男兵M人,没征募一个人需要花费10000美元,但是如果已经征募的人中有一些关系亲密的人,那么可以少花一些钱, ...
- StackExchange.Redis 官方文档
原文:StackExchange.Redis 官方文档 时隔多年的翻译终于完成了第六个,也是很重要的的官方文档,是介绍有关链接管理,管道流水线和多路复用的 官方地址在这里:官方文档 下面做个汇总: S ...