EditText限制小数点前后位数的实例
程序员文章站
2022-10-24 17:15:38
在edittext输入数字的时候,通常我们需要限制小数点前后位数。比如金额输入一般我们需要限制小数点后面最多2位。我们可以通过 textwatcher 实现。...
在edittext输入数字的时候,通常我们需要限制小数点前后位数。比如金额输入一般我们需要限制小数点后面最多2位。我们可以通过 textwatcher 实现。
public class mywatcher implements textwatcher { private int beforedot; private int afterdot; /** * 构造器 * * @param beforedot 小数点前位数 不限制输入-1 * @param afterdot 小数点后位数 不限制输入-1 */ public mywatcher(int beforedot, int afterdot) { this.beforedot = beforedot; this.afterdot = afterdot; } @override public void beforetextchanged(charsequence s, int start, int count, int after) { } @override public void ontextchanged(charsequence s, int start, int before, int count) { } @override public void aftertextchanged(editable s) { judge(s); } private void judge(editable editable) { string temp = editable.tostring(); int posdot = temp.indexof("."); //直接输入小数点的情况 if (posdot == 0) { editable.insert(0, "0"); return; } //连续输入0 if (temp.equals("00")) { editable.delete(1, 2); return; } //输入"08" 等类似情况 if (temp.startswith("0") && temp.length() > 1 && (posdot == -1 || posdot > 1)) { editable.delete(0, 1); return; } //不包含小数点 不限制小数点前位数 if (posdot < 0 && beforedot == -1) { //do nothing 仅仅为了理解逻辑而已 return; } else if (posdot < 0 && beforedot != -1) { //不包含小数点 限制小数点前位数 if (temp.length() <= beforedot) { //do nothing 仅仅为了理解逻辑而已 } else { editable.delete(beforedot, beforedot + 1); } return; } //如果包含小数点 限制小数点后位数 if (temp.length() - posdot - 1 > afterdot && afterdot != -1) { editable.delete(posdot + afterdot + 1, posdot + afterdot + 2);//删除小数点后多余位数 } } }
使用的时候 如下:
<edittext android:id="@+id/et_i_want" android:layout_width="wrap_content" android:layout_height="25dp" android:hint="0.00" android:inputtype="numberdecimal"/>etiwant.addtextchangedlistener(new mywatcher(-1, 2));//限制小数点后最多2位
以上这篇edittext限制小数点前后位数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。