EditText限制小数点前后位数
2017-08-15 16:30
239 查看
本文转自:EditText限制小数点前后位数
在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限制小数点前后位数的实例
- EditText限制小数点前后位数
- 利用正则表达式限制EditText小数点前后位数和格式
- android EditText 中的TextWatcher 限制小数点位数
- EditText限制小数点前后位数
- 设置UITextField输入小数点位数的限制
- Android EditText控制小数点位数及输入限制工具类
- 给浮点数限制小数点后的位数
- Android 简单限制小数点后的位数以及只能以一个0开头
- iOS 数字键盘限制输入的位数以及小数点的位数
- Android 限制EditText输入小数点后面位数
- EditText限制输入小数点后字符位数
- Android EditText 限制输入类型数字或小数,并且小数位数限定为两位
- 两个小数相乘,小数点后面位数没有限制,设计一个高精度算法
- 两个数相乘,小数点后位数没有限制,请写一个高精度算法
- jquery easyui datagrid中NumberBox限制小数位数后不能输入小数点的解决办法
- iOS UITextField 限制用户输入小数点后位数的方法
- 两个数相乘,小数点后位数没有限制,请写一个高精度算法
- 输入框只允许输入数字并且限制小数点位数
- 两个数相乘,小数点后位数没有限制…