国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥中县| 枝江市| 新竹市| 余干县| 富宁县| 旬邑县| 进贤县| 宜宾市| 沙田区| 仪征市| 玛曲县| 阿拉善左旗| 漳浦县| 清水县| 塔河县| 绵阳市| 龙井市| 孝昌县| 聂拉木县| 大理市| 定边县| 丹江口市| 桐城市| 三河市| 洱源县| 广灵县| 腾冲县| 甘南县| 金塔县| 明溪县| 寿宁县| 自贡市| 乡宁县| 怀远县| 墨玉县| 延吉市| 天气| 临城县| 沧源| 波密县| 滁州市|