1. 程式人生 > >Edittext 限制輸入小數位數 判斷輸入是否為數字

Edittext 限制輸入小數位數 判斷輸入是否為數字

在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);
}
        }
    };