首页 > 系统 > Android > 正文

Android EditText限制输入整数和小数的位数的方法示例

2019-10-21 21:41:25
字体:
来源:转载
供稿:网友

直接上代码

新建DecimalInputTextWatcher类继承TextWatcher (代码可直接复制使用) 

import android.text.Editable;import android.text.InputFilter;import android.text.TextWatcher;import android.widget.EditText;/** * EditText 限制输入整数和小数 的位数 * 默认 整数位无限制,小数位 最多2位 */public class DecimalInputTextWatcher implements TextWatcher {  private static final int DEFAULT_DECIMAL_DIGITS = 2;//默认 小数的位数  2 位  private EditText editText;  private int decimalDigits;// 小数的位数  private int integerDigits;// 整数的位数  public DecimalInputTextWatcher(EditText editText) {    this.editText = editText;    this.decimalDigits = DEFAULT_DECIMAL_DIGITS;  }  public DecimalInputTextWatcher(EditText editText, int decimalDigits) {    this.editText = editText;    if (decimalDigits <= 0)      throw new RuntimeException("decimalDigits must > 0");    this.decimalDigits = decimalDigits;  }  public DecimalInputTextWatcher(EditText editText, int integerDigits, int decimalDigits) {    this.editText = editText;    if (integerDigits <= 0)      throw new RuntimeException("integerDigits must > 0");    if (decimalDigits <= 0)      throw new RuntimeException("decimalDigits must > 0");    this.decimalDigits = decimalDigits;    this.integerDigits = integerDigits;  }  @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 editable) {    String s = editable.toString();    editText.removeTextChangedListener(this);    if (s.contains(".")) {      if (integerDigits > 0) {        editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + decimalDigits + 1)});      }      if (s.length() - 1 - s.indexOf(".") > decimalDigits) {        s = s.substring(0,            s.indexOf(".") + decimalDigits + 1);        editable.replace(0, editable.length(), s.trim());//不输入超出位数的数字      }    } else {      if (integerDigits > 0) {        editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(integerDigits + 1)});        if (s.length() > integerDigits) {          s = s.substring(0, integerDigits);          editable.replace(0, editable.length(), s.trim());        }      }    }    if (s.trim().equals(".")) {//小数点开头,小数点前补0      s = "0" + s;      editable.replace(0, editable.length(), s.trim());    }    if (s.startsWith("0") && s.trim().length() > 1) {//多个0开头,只输入一个0      if (!s.substring(1, 2).equals(".")) {        editable.replace(0, editable.length(), "0");      }    }    editText.addTextChangedListener(this);  }}

使用 

editText.addTextChangedListener(new DecimalInputTextWatcher(weight, 3, 5));//限制输入位数:整数3位,小数点后两位

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表