Edittext 限制輸入小數位數 判斷輸入是否為數字
阿新 • • 發佈:2019-02-11
在APP中用到Edittext的時候經常會遇到輸入限制的問題,
1.在限制輸入型別為double的數字時就需要做兩步判斷,
<EditTextandroid:layout_width="wrap_content" android:layout_height="wrap_content"android:numeric="decimal"/>在佈局中定義EditText的時候設定為只能輸入數字,設定數字的時候可以直接設定android:numeric="decimal" ,或者設定android:digits=".0123456789".
第一種設定在輸入內容為 .12的時候獲取出來的值會預設為0.12,第二種則可以輸入....12這樣的內容,這時候就需要手動判斷輸入內容是否位數字。方法下,所以一般直接用第一種
/** * 判斷字串是否是數字 */ public static boolean isNumber(String value) { return isInteger(value) || isDouble(value); } /** * 判斷字串是否是整數 */ public static boolean isInteger(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false;} } /** * 判斷字串是否是浮點數 */ public static boolean isDouble(String value) { try { Double.parseDouble(value); if (value.contains(".")) return true; return false; } catch (NumberFormatException e) { return false; } }
2.限制輸入小數位數
需要給EditText設定TextWatcher,在輸入的時候進行判斷,下面為限制輸入4位小數,其它同理
TextWatcher mTextWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { String temp = s.toString(); int posDot = temp.indexOf("."); if (posDot <= 0) return; if (temp.length() - posDot - 1 > 4) { s.delete(posDot + 5, posDot + 6); } } };