代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
Android的EditText输入长度限制
作者:
夜落满楼
/ 发布于
2013/11/28
/
694
基于Android平台,继承LengthFilter类的输入长度限制类
public class CustomLengthFilter extends LengthFilter { private int max;// 字符串能输入的最大长度 private onFullListener listener; /** * @param max * 字符串能输入的最大长度,半角字符算1,全角字符算2 */ public CustomLengthFilter(final int max) { super(max); this.max = max; } @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { int mlength = getLength(dest.subSequence(dstart, dend).toString());// 修改字符串的长度 int dlength = getLength(dest.toString());// 已有字符串的长度 int slength = getLength(source.subSequence(start, end).toString());// 要增加的字符串的长度 int keep = this.max - (dlength - mlength);// 还差多少字符到最大长度 if (keep <= 0) { // 已经到达最大长度 if (null != listener) { listener.isFull(); } return ""; } else if (keep >= slength) { // 还没到达最大长度 return null; } else { // 超出最大长度 int tmp = 0; int index; for (index = start; index <= end; index++) { if (isFullwidthCharacter(source.charAt(index))) { tmp += 2; } else { tmp += 1; } if (tmp > keep) { break; } } if (null != listener) { listener.isFull(); } return source.subSequence(start, index); } } public void setOnFullListener(onFullListener listener) { this.listener = listener; } public interface onFullListener { /** * 这个方法会在输入字符串超出极限时被调用 */ void isFull(); } /** * 判断字符串是否为空或空串 * * @param str * 待判断的字符串 * @return true:字符串为空或空串 */ public static boolean isNull(final String str) { if (null == str || "".equals(str)) { return true; } else { return false; } } /** * 获取字符串长度(半角算1、全角算2) * * @param str * 字符串 * @return 字符串长度 */ public static int getLength(final String str) { if (isNull(str)) { return 0; } int len = str.length(); for (int i = 0; i < str.length(); i++) { if (isFullwidthCharacter(str.charAt(i))) { len = len + 1; } } return len; } /** * 获取字符串的全角字符数 * * @param str * 待计算的字符串 * @return 字符串的全角字符数 */ public static int getFwCharNum(final String str) { if (isNull(str)) { return 0; } int num = 0; for (int i = 0; i < str.length(); i++) { if (isFullwidthCharacter(str.charAt(i))) { num++; } } return num; } /** * 判断字符是否为全角字符 * * @param ch * 待判断的字符 * @return true:全角; false:半角 */ public static boolean isFullwidthCharacter(final char ch) { if (ch >= 32 && ch <= 127) { // 基本拉丁字母(即键盘上可见的,空格、数字、字母、符号) return false; } else if (ch >= 65377 && ch <= 65439) { // 日文半角片假名和符号 return false; } else { return true; } } }
试试其它关键字
输入长度限制
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
夜落满楼
贡献的其它代码
(
1
)
.
Android的EditText输入长度限制
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3