亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

长汀县| 晴隆县| 武定县| 大化| 兰州市| 恩平市| 凤凰县| 焦作市| 宜兰市| 庐江县| 卢龙县| 甘泉县| 台安县| 雅安市| 保定市| 陆丰市| 隆子县| 新沂市| 象州县| 贵阳市| 凯里市| 阿坝县| 望谟县| 革吉县| 重庆市| 临高县| 绥德县| 泸州市| 临武县| 兴化市| 长兴县| 永宁县| 威远县| 辉南县| 刚察县| 虞城县| 西城区| 临沧市| 古交市| 隆昌县| 镇沅|