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
  • asp之家 软件编程 m.aspxhome.com