国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android EditText限制輸入整數和小數的位數的方法示例

2019-12-12 00:35:14
字體:
來源:轉載
供稿:網友

直接上代碼

新建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位,小數點后兩位

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏尼特右旗| 若尔盖县| 家居| 甘德县| 竹溪县| 城固县| 威宁| 文水县| 社旗县| 库伦旗| 于田县| 甘谷县| 措勤县| 梅河口市| 丰都县| 咸宁市| 大石桥市| 英吉沙县| 石柱| 荆门市| 阿瓦提县| 连平县| 东山县| 邵阳市| 中西区| 油尖旺区| 饶平县| 磴口县| 隆尧县| 肇东市| 宁波市| 维西| 济南市| 通海县| 寿光市| 驻马店市| 宜兴市| 双城市| 晋州市| 晋州市| 浦北县|