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限制小数点前后位数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Ubuntu中为Android系统上编写Linux内核驱动程序实现方法
本文主要介绍在Ubuntu 上为Android系统编写Linux内核驱动程序, 这里对编写驱动程序做了详细的说明,对研究Android源码和HAL都有巨大的帮助,有需要的小伙伴可以参考下2016-08-08Android开发技巧之永不关闭的Toast信息框(长时间显示而非系统关闭)
Toast信息提示框之所以在显示一定时间后会自动关闭,是因为在系统中有一个Toast队列;那么有些时候需要这个Toast信息提示框长时间显示,直到需要关闭它时通过代码来控制,而不是让系统自动来关闭Toast信息提示框2013-01-01Android中Fragment子类及其PreferenceFragment的创建过程演示
这篇文章主要介绍了Android中Fragment子类及其PreferenceFragment的创建过程演示,PreferenceFragment用来保存Fragment的选项设置,需要的朋友可以参考下2016-05-05Flutter 使用Navigator进行局部跳转页面的方法
这篇文章主要介绍了Flutter 使用Navigator进行局部跳转页面的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-05-05
最新评论