EditText 最大字符數(shù)限制

EditText 經(jīng)常會有限制輸入字符長度的需求,限制輸入長度的方法有三種:

1. 在XML 文件中設(shè)置

android:maxLength="50"

2. 通過InputFilter

EditText editText = (EditText)findViewById(R.id.edit);
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});

實際上在XML 中設(shè)置,最后也是通過設(shè)置InputFilter 實現(xiàn)的。LengthFilter 只是實現(xiàn)了字符串長度的限制,如果我們想要其他限制,比如根據(jù)字符串的字節(jié)數(shù)等,可以自己實現(xiàn)InputFilter 接口來實現(xiàn)相應(yīng)功能。

3. 為EditText設(shè)置 TextWatcher 監(jiān)聽

我們可以自定義一個類,實現(xiàn)TextWatcher 接口,監(jiān)聽EditText 的文本變化,手動對輸入文本進行截斷,例如下面(注:示例代碼,未經(jīng)過嚴(yán)密測試):

EditText editText = findViewById(R.id.edit); 
editText.addTextChangedListener(new MyTextWatcher(editText, 10));

private class MyTextWatcher implements TextWatcher { 
        private EditText editText; 
        private int maxCount; 
 
        MyTextWatcher(EditText editText, int maxCount) { 
            this.editText = editText; 
            this.maxCount = maxCount; 
        } 
 
        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
 
        } 
 
        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 
 
        } 
 
        @Override 
        public void afterTextChanged(Editable s) { 
 
            if (s.length() > maxCount) { 
                editText.setText(s.subSequence(0, maxCount)); 
                Selection.setSelection(editText.getText(), maxCount); 
            } 
        } 
    }

上面代碼也可實現(xiàn)輸入長度限制。

總結(jié):

如果是一種固定要求的輸入框,可以直接在XML 中寫,如果想要動態(tài)控制,甚至實現(xiàn)更多的控制功能,建議使用InputFilter 或 TextWatcher,如果只是為了限制輸入建議使用InputFilter。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言 EditTex是Android中比較常用的一個控件,可以說它是用戶和Android應(yīng)用進行數(shù)據(jù)傳遞的通道.通...
    OzanShareing閱讀 6,632評論 5 33
  • 設(shè)置單行,多行,自動換行,文字間距參考TextView 在EditText設(shè)置單行,由于android:singl...
    大灰狼zz閱讀 1,280評論 0 0
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,390評論 0 17
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,689評論 1 32
  • 這篇文章分享我的 Android 開發(fā)(入門)課程 的第九個實戰(zhàn)項目:習(xí)慣記錄應(yīng)用。這個項目托管在我的 GitHu...
    HsuJin閱讀 728評論 0 11

友情鏈接更多精彩內(nèi)容