安卓edittext實現輸入數字限制條件的效果


我們知道edittext能指定輸入字符類型,這次我們就來了解下在數字模式下的一些顯示控制輸入的效果

1.限制輸入數字

android:inputType="number|numberDecimal"

2.設置edittext監聽

		et_denounce_content.addTextChangedListener(new TextWatcher() {
			@Override
			public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
				1
			}

			@Override
			public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                               2
			}

			@Override
			public void afterTextChanged(Editable editable) {
                              3
			}
		});

 1 2 3 分別為改變之前、文字改變、改變之后 我怕們需要在onTextChanged()回調的方法中實現我們的功能

//刪除.后面超過兩位的數字
適用於保留兩位小數
if (s.toString().contains(".")) {
   if (s.length() - 1 - s.toString().indexOf(".") > 1) {
      s = s.toString().subSequence(0,
            s.toString().indexOf(".") + 2);
      et_denounce_content.setText(s);
      et_denounce_content.setSelection(s.length());
   }
}
// 如果輸入的數字大於9則強制改為9
適用於限制10以下的數字輸入
        if (!s.toString().trim().substring(0).equals(".")
      && !NullUtil.isStringEmpty(s.toString().trim())
      &&UnitSociax.stringParseDouble(s.toString().trim())>=10) {
                et_denounce_content.setText("9");
                et_denounce_content.setSelection(1);
            }
// 如果輸入的數字小於1則強制改為1
適用於大於1的數字輸入
if (!s.toString().trim().substring(0).equals(".")
      && !NullUtil.isStringEmpty(s.toString().trim())
      &&UnitSociax.stringParseDouble(s.toString().trim())<1) {
   et_denounce_content.setText("1");
   et_denounce_content.setSelection(1);
}
//如果.在起始位置,則起始位置自動補某些數字這里用X代替
if (s.toString().trim().substring(0).equals(".")) {
   s = "X" + s;
   et_denounce_content.setText(s);
   et_denounce_content.setSelection(2);
}
//如果起始位置為0並且第二位跟的不是".",則無法后續輸入
適用於小數小於1的操作
if (s.toString().startsWith("0")
      && s.toString().trim().length() > 1) {
   if (!s.toString().substring(1, 2).equals(".")) {
      et_denounce_content.setText(s.subSequence(0, 1));
      et_denounce_content.setSelection(1);
      return;
   }
}

以上條件組合使用來實現自己的效果。  

注意:在處理數字的室友注意類型轉換異常的問題,判斷.位置從而知道現在的數字是否為有效數字

!s.toString().trim().substring(0).equals(".")


by:磊磊tua



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM