Android 限制edittext 整数和小数位数 过滤器(详解)
作者:jingxian 时间:2023-11-24 17:33:52
写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码:
package allone.verbank.apad.client.component;
import android.text.InputFilter;
import android.text.Spanned;
/**
*
* @Title: ComponentDigitCtrlFilter.java
* @Package allone.verbank.apad.client.component
* @Description: 为了限制edit根据商品输入指定的位数和小数位
* @author qiulinhe qiu.linhe@allone.cn
*/
public class ComponentDigitCtrlFilter implements InputFilter {
private boolean isJPY;
private int digit;
public ComponentDigitCtrlFilter(boolean isJPY, int digit) {
this.isJPY = isJPY;
this.digit = digit;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
// 删除等特殊字符,直接返回
if ("".equals(source.toString())) {
return null;
}
String oriValue = dest.toString();
StringBuffer sb = new StringBuffer(oriValue);
sb.append(source);
String newValue = sb.toString();
String[] newValueVec = newValue.split("\\.");
if (newValueVec.length == 2) {
double number = Double.parseDouble(newValueVec[0]);
boolean numberflag = true;
if (isJPY) {
numberflag = ((number - 999 > 0.000001) ? false : true);
} else {
numberflag = ((number - 99 > 0.000001) ? false : true);
}
boolean digitflag = true;
try {
String digitNumber = newValueVec[1];
digitflag = digitNumber.toCharArray().length > digit ? false : true;
} catch (Exception ex) {
digitflag = false;
}
if (numberflag && digitflag) {
return source;
} else {
return "";
}
} else {
double value = Double.parseDouble(newValue);
if (isJPY) {
return value > 999 ? "" : source;
} else {
return value > 99 ? "" : source;
}
}
// dest.subSequence(dstart, dend)
}
}
逻辑是判断传入的isJPY是否是要整数两位小数三位数的,然后对输入的数据进行限制,只需要将过滤器添加到对应的edittext控件即可,如下:stopEditText.setFilters(new InputFilter[] { new ComponentDigitCtrlFilter(digit == 2, digit) });
标签:edittext,限制,小数位数,整数
0
投稿
猜你喜欢
Java实现插入排序算法可视化的示例代码
2021-08-06 19:35:50
Android编程实现小说阅读器滑动效果的方法
2021-10-26 06:44:06
Unity UI实现循环播放序列图
2023-03-14 15:51:10
Java详细分析String类与StringBuffer和StringBuilder的使用方法
2022-04-23 15:23:30
Android Handler 机制实现原理分析
2022-01-14 23:46:49
详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
2022-08-18 19:21:44
Spring创建bean对象三种方式代码实例
2023-02-04 08:53:33
C++实现LeetCode(169.求大多数)
2023-09-04 08:03:47
SpringMVC请求流程源码解析
2021-08-07 03:35:11
SpringBoot配置 Druid 三种方式(包括纯配置文件配置)
2021-06-03 01:41:19
SpringMvc web.xml配置实现原理过程解析
2023-04-14 01:42:27
java中LinkedList使用迭代器优化移除批量元素原理
2021-12-05 11:26:07
spring boot如何实现切割分片上传
2023-06-29 02:49:26
python如何调用java类
2022-03-13 16:11:10
使用maven自定义插件开发
2022-10-07 02:21:37
Android实现调用摄像头拍照并存储照片
2023-05-02 10:48:20
SpringBoot事件发布和监听详解
2022-04-18 02:39:59
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
2021-06-01 14:28:00
Java基础教程之HashMap迭代删除使用方法
2023-10-04 02:15:32
全面理解Java类和对象
2021-11-17 11:11:50