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

首頁 > 系統 > 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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岢岚县| 林西县| 德清县| 尤溪县| 怀化市| 疏附县| 淮阳县| 麟游县| 铁岭县| 孟州市| 化州市| 班玛县| 雷山县| 大石桥市| 阿合奇县| 班戈县| 留坝县| 西盟| 桂平市| 石家庄市| 和龙市| 扎赉特旗| 登封市| 商都县| 磐石市| 贞丰县| 鹤壁市| 辉南县| 莫力| 怀来县| 收藏| 南郑县| 聊城市| 西平县| 大足县| 稷山县| 金华市| 长泰县| 新蔡县| 黔江区| 黄骅市|