最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ù)點后兩位效果,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

相關文章

最新評論

芮城县| 宜丰县| 正阳县| 横山县| 灵武市| 襄樊市| 伊吾县| 惠安县| 临武县| 水富县| 太原市| 宁都县| 三亚市| 江门市| 铜梁县| 工布江达县| 龙井市| 呼和浩特市| 宜城市| 东海县| 长泰县| 新安县| 吕梁市| 秦安县| 灵台县| 衡东县| 襄樊市| 遵化市| 灵石县| 读书| 伊宁县| 道真| 洛浦县| 井冈山市| 中阳县| 蒙山县| 九寨沟县| 如皋市| 塘沽区| 马鞍山市| 精河县|