Android 控制edittext或者textview输入的为指定的整数位和小数位

Android 控制edittext或者textview输入的为指定的整数位和小数位,关于这个博客有一篇文章,不过要补充的是自定义键盘上如果出现00,或者其他自定义的数据如20000之类的,对于控制小数位的方式,代码如下:

package client.verbank.mtp.allone.component.util;

import android.text.InputFilter;
import android.text.Spanned;

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("\\.");
		System.out.println("test11111111111 " + newValueVec[0]);
		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)
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值