Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android EditText輸入最大值提示功能

Android EditText輸入最大值提示功能

編輯:關於Android編程

有時,我們會對EditText添加最大長度限制,在EditText達到輸入上限時阻止繼續輸入並彈出提示。

這個問題看似簡單,但很難處理的完美。

由於EditText無法攔截軟件盤事件,常規的通過TextWatcher,OnKeyListener,等方法都會存在一定的問題。經過反復試錯,終於發現以下方案:


1.實現一個InputFilter,在InputFilter中判斷輸入長度,並彈出提示:

   public class LengthFilter implements InputFilter {
        public LengthFilter(int max) {
            mMax = max;
        }

        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                Spanned dest, int dstart, int dend) {
            int keep = mMax - (dest.length() - (dend - dstart));

            if (keep <= 0) {
                if (mErrorToast == null) {
                    mErrorToast = Toast.makeText(ShowDetailCommentActivity.this, R.string.comment_input_overflow,
                            Toast.LENGTH_SHORT);
                }
                mErrorToast.show();
                return "";
            } else if (keep >= end - start) {
                return null; // keep original
            } else {
                keep += start;
                if (mErrorToast == null) {
                    mErrorToast = Toast.makeText(ShowDetailCommentActivity.this, R.string.comment_input_overflow,
                            Toast.LENGTH_SHORT);
                }
                mErrorToast.show();
                if (Character.isHighSurrogate(source.charAt(keep - 1))) {
                    --keep;
                    if (keep == start) {
                        return "";
                    }
                }
                return source.subSequence(start, keep);
            }
        }

        private int mMax;
    }

2.將這個InputFilter設置給對應的EditText:

mEditText.setFilters(new InputFilter[] { new LengthFilter(mMaxTextNum) });


代碼很少但有效,各位可以嘗試一下。



作者:xzy2046,轉載需注明。博客主頁:http://blog.csdn.net/xzy2046



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved