EditText限制小数点前后位数的实例
2017-04-15 09:42
661 查看
在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限制小数点前后位数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- EditText限制小数点前后位数
- EditText限制小数点前后位数
- EditText限制小数点前后位数
- android EditText 中的TextWatcher 限制小数点位数
- 利用正则表达式限制EditText小数点前后位数和格式
- UITextField自定义输入限制(纯数字输入,不输入汉字,小数点后位数限制)
- 设置UITextField输入小数点位数的限制
- iOS uitextField限制输入小数点的位数
- android edittext 限制输入框小数位数
- EditText限制输入的小数点只能一个
- 两个数相乘,小数点后位数没有限制…
- EditText实现只能输入数字和小数点,限制小数点后?位,并且以数字0开头后只能输入小数点
- android edittext 限制输入框小数位数
- UITextField 限制用户输入小数点后位数的方法
- 【Swift】UITextField 输入小数点和位数限制
- iOS 数字键盘限制输入的位数以及小数点的位数
- 给浮点数限制小数点后的位数
- EditText内容输入限制最大:小数点前五位,小数点后2位
- UITextField 限制用户输入小数点后位数的方法
- iOS UITextField 限制用户输入小数点后位数的方法