欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android金額輸入框只允許輸入小數(shù)點后兩位效果

 更新時間:2017年05月30日 11:30:01   作者:阿鐘程序猿  
實現(xiàn)android 金額輸入框輸入小數(shù)點后兩位的效果也不是很復雜,只需要設置輸入框輸入的字符類型、設置InputFilter、設置輸入變化監(jiān)聽即可。這篇文章主要介紹了Android金額輸入框只允許輸入小數(shù)點后兩位 ,需要的朋友可以參考下

一:要實現(xiàn)這個效果也不是很復雜,只需要設置輸入框輸入的字符類型、設置InputFilter、設置輸入變化監(jiān)聽即可。下面直接來看代碼吧….

二:new 一個class extends AppCompatEditText并寫上一個初始化函數(shù)

private void init() {
  //設置輸入框允許輸入的類型(正則)
  //對應的布局屬性是--->android:digits="0123456789."
  setKeyListener(DigitsKeyListener.getInstance("0123456789."));
  //設置輸入字符
  setFilters(new InputFilter[]{inputFilter});
  addTextChangedListener(this);
}

三:inputFilter來分割小數(shù)后的保留位數(shù)

private InputFilter inputFilter = new InputFilter() {
  @Override
  public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
    // 刪除等特殊字符,直接返回
    if (TextUtils.isEmpty(source)) {
      return null;
    }
    String dValue = dest.toString();
    String[] splitArray = dValue.split("\\.");
    if (splitArray.length > 1) {
      String dotValue = splitArray[1];
      // 2 表示輸入框的小數(shù)位數(shù)
      int diff = dotValue.length() + 1 - 2;
      if (diff > 0) {
        return source.subSequence(start, end - diff);
      }
    }
    return null;
  }
};

如果你想保留其它位數(shù)的小數(shù),只需要把上面的2改成你需要的位數(shù)即可。

三:輸入框輸入變化的監(jiān)聽,來處理小數(shù)點不能出現(xiàn)在第一位&&不能出現(xiàn)多個

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
  //如果輸入框為空則不處理
  if (TextUtils.isEmpty(s)) {
    return;
  }
  //第一個字符不為小數(shù)點
  if (s.length() == 1 && s.toString().equals(".")) {
    setText("");
    return;
  }
  int counter = counter(s.toString(), '.');
  if (counter > 1) {
    //小數(shù)點第一次出現(xiàn)的位置
    int index = s.toString().indexOf('.');
    setText(s.subSequence(0, index + 1));
  }
  setSelection(getText().toString().length());
}

四:統(tǒng)計一個字符在字符串中出現(xiàn)的次數(shù)

/**
 * 統(tǒng)計一個字符在字符串中出現(xiàn)的次數(shù)
 *
 * @param s 字符串
 * @param c 字符
 * @return 數(shù)量
 */
public int counter(String s, char c) {
  int count = 0;
  for (int i = 0; i < s.length(); i++) {
    if (s.charAt(i) == c) {
      count++;
    }
  }
  return count;
}

就這幾步就可以輕松實現(xiàn)了,想看源碼的點擊這里哦源碼鏈接

以上所述是小編給大家介紹的Android金額輸入框只允許輸入小數(shù)點后兩位效果,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

相關文章

最新評論