1. 程式人生 > >EditText限制輸入內容為1-100範圍內的數字

EditText限制輸入內容為1-100範圍內的數字

首先在佈局檔案中,設定inputType為number,且maxLength=3;然後設定監聽輸入,程式碼如下

public TextWatcher inputWatch(final EditText input) {
        return new TextWatcher() {

            private String outStr = ""; //這個值儲存輸入超過兩位數時候顯示的內容

            @Override
            public void beforeTextChanged(CharSequence s, int start, int
count, int after) { String edit=s.toString(); if (edit.length()==2&&Integer.parseInt(edit)>=10){ outStr=edit; } } @Override public void onTextChanged(CharSequence s, int start, int before, int
count) { String words = s.toString(); //首先內容進行非空判斷,空內容(""和null)不處理 if (!TextUtils.isEmpty(words)) { //1-100的正則驗證 Pattern p = Pattern.compile("^(100|[1-9]\\d|\\d)$"); Matcher m = p.matcher(words); if
(m.find() || ("").equals(words)) { //這個時候輸入的是合法範圍內的值 } else { if (words.length() > 2) { //若輸入不合規,且長度超過2位,繼續輸入只顯示之前儲存的outStr input.setText(outStr); //重置輸入框內容後預設游標位置會回到索引0的地方,要改變游標位置 input.setSelection(2); } ToastUtil.showToast("請輸入範圍在1-100之間的整數"); } } } @Override public void afterTextChanged(Editable s) { //這裡的處理是不讓輸入0開頭的值 String words = s.toString(); //首先內容進行非空判斷,空內容(""和null)不處理 if (!TextUtils.isEmpty(words)) { if (Integer.parseInt(s.toString()) <= 0) { input.setText(""); ToastUtil.showToast("請輸入範圍在1-100之間的整數"); } } } }; }