欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 限制edittext 整数和小数位数 过滤器(详解)

程序员文章站 2022-05-20 22:01:09
写了一个过滤器,根据需要限制edittext输入的整数和小数位,如下代码: package allone.verbank.apad.client.componen...

写了一个过滤器,根据需要限制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) });

以上这篇android 限制edittext 整数和小数位数 过滤器(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。