中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-22 11:39:06 來源:腳本之家 閱讀:177 作者:淡淡_孩子氣 欄目:移動開發

直接上代碼

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周口市| 荣成市| 伊川县| 板桥市| 临洮县| 巴青县| 庆元县| 汝南县| 亚东县| 铅山县| 白银市| 三台县| 额济纳旗| 六盘水市| 浦城县| 罗甸县| 靖远县| 南陵县| 望奎县| 威远县| 水富县| 黑水县| 石河子市| 汾西县| 文安县| 永清县| 开原市| 辉南县| 阳原县| 阿坝县| 紫阳县| 兰考县| 峨山| 临高县| 日照市| 西青区| 中山市| 营口市| 比如县| 黎城县| 桐柏县|