Android EditText控制小数点位数及输入限制工具类
来源:互联网 发布:mysql emoji 截断 编辑:程序博客网 时间:2024/06/07 17:46
项目开发中总是遇到输入框小数点限制的问题 所以就自己封装了一个工具类 而且还限制了错误输入的问题...
import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.widget.EditText;/** * 保留几位小数的工具类 * Created by xrc on 2017/3/24. */public class NumberInputHelper { /** * @param editText 控制的输入框 * @param num 保留几位小数 */ public static void format(final EditText editText, final int num) { editText.addTextChangedListener(new TextWatcher() { @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) { if (s == null || s.length() == 0) { return; } String price = editText.getText().toString(); if(price.equals("0")){ return; } if (!TextUtils.isEmpty(price)) { if (price.startsWith(".")) { editText.setText(""); } else { String content = s == null ? null : s.toString(); int size = content.length(); //删除两个重复点 if (size >= 2 && content.startsWith("0") && content.substring(1, size).contains(".")) { //判断之前有没有输入过. int dex = content.indexOf("."); if(size - dex > 1){ if(String.valueOf(content.charAt(dex+1)).equals(".")){ s.delete(dex+1, size);//删除重复输入的. return; } } } //删除重复0 if (Float.parseFloat(price) > 0) { if (size >= 2 && content.startsWith("0") && !String.valueOf(content.charAt(1)).equals("0") && !String.valueOf(content.charAt(1)).equals(".")) { //判断之前有没有输入过0 s.delete(0, 1);//删除重复输入的0 } } else if (Float.parseFloat(price) == 0) { if (size >= 2 && content.startsWith("0") && String.valueOf(content.charAt(1)).equals("0")) { //判断之前有没有输入过0 s.delete(size - 1, size);//删除重复输入的0 } } //删除多余数字 if (size >= 2 && content.contains(".")) { //判断之前有没有输入过. int dex = content.indexOf("."); if(size - dex - 1 > num){ s.delete(size - 1, size); return; } } } } } }); }}
使用如下在Activity中使用:
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.EditText;public class Main2Activity extends AppCompatActivity { EditText et; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); et = (EditText)findViewById(R.id.et); NumberInputHelper.format(et,0); } }
阅读全文
0 0
- Android EditText控制小数点位数及输入限制工具类
- Android 限制EditText输入小数点后面位数
- EditText限制输入小数点后字符位数
- android EditText 中的TextWatcher 限制小数点位数
- android:限制EditText输入位数
- Android——EditText金额输入控制位数(小数点前几位,小数点后几位)
- EditText限制小数点前后位数
- EditText限制小数点前后位数
- Android EditText限制小数点输入两位
- android edittext 限制输入框小数位数
- android edittext 限制输入框小数位数
- android EditText限制输入框小数位数
- android edittext 限制输入框小数位数
- android edittext 限制输入框小数位数
- Android Edittext限制输入小数位数
- android EditText限制输入框小数位数
- android edittext限制输入小数位数,限制输入数字大小
- EditText输入限制小数点后两位
- Android App 沉浸式状态栏解决方案
- ubuntu下允许root用户ssh远程登录
- struts2核心工作原理
- Retrofit源码解析-动态代理
- Ubuntu14.04+ROS Indigo+SVO(Semi-direct Visual Odometry)
- Android EditText控制小数点位数及输入限制工具类
- Nodejs notes
- Retrofit 源码剖析-深入
- BZOJ 刷题开始
- 508. Most Frequent Subtree Sum
- Java技术汇总
- 异常解决 java.lang.UnsupportedOperationException: Required method destroyItem was not overridden
- DAO层,Service层,Controller层、View层
- 【51Nod】1181 质数中的质数(质数筛法)