EditText限制小数点前后位数的实例
更新时间:2017年04月15日 09:42:50 投稿:jingxian
下面小编就为大家带来一篇EditText限制小数点前后位数的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在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限制小数点前后位数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Android指纹识别功能深入浅出分析到实战(6.0以下系统解决方案)
指纹识别在现实应用中已经很多了,本篇文章主要介绍了Android指纹识别功能,具有一定的参考价值,有需要的可以了解一下。2016-11-11Android中使用PagerSlidingTabStrip实现导航标题的示例
本篇文章主要介绍了Android中使用PagerSlidingTabStrip实现导航标题的示例,具有一定的参考价值,有兴趣的可以了解一下。2017-01-01Android 蓝牙连接 ESC/POS 热敏打印机打印实例(ESC/POS指令篇)
这篇文章主要介绍了Android 蓝牙连接 ESC/POS 热敏打印机打印实例(ESC/POS指令篇),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-04-04
最新评论