Android EditText限制輸入字符類型的方法總結(jié)
Android EditText限制輸入字符類型的方法總結(jié)
前言:
最近的項(xiàng)目上需要限制EditText輸入字符的類型,就把可以實(shí)現(xiàn)這個(gè)功能的方法整理了一下:
1、第一種方式是通過(guò)EditText的inputType來(lái)實(shí)現(xiàn),可以通過(guò)xml或者Java文件來(lái)設(shè)置。假如我要設(shè)置為顯示密碼的形式,可以像下面這樣設(shè)置:
在xml中
Android:inputType="textPassword"
在java文件中,可以用 myEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
當(dāng)然,還有更多的其他屬性用來(lái)進(jìn)行輸入設(shè)置。
2、第二種是通過(guò)android:digits 屬性來(lái)設(shè)置,這種方式可以指出要顯示的字符,比如我要限制只顯示數(shù)字,可以這樣:
android:digits="0123456789"
如果要顯示的內(nèi)容比較多,就比較麻煩了,將要顯示的內(nèi)容依次寫在里面。
3、通過(guò)正則表達(dá)式來(lái)判斷。下面的例子只允許顯示字母、數(shù)字和漢字。
public static String stringFilter(String str)throws PatternSyntaxException{ // 只允許字母、數(shù)字和漢字 String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); return m.replaceAll("").trim(); }
然后需要在TextWatcher的onTextChanged()中調(diào)用這個(gè)函數(shù),
@Override public void onTextChanged(CharSequence ss, int start, int before, int count) { String editable = editText.getText().toString(); String str = stringFilter(editable.toString()); if(!editable.equals(str)){ editText.setText(str); //設(shè)置新的光標(biāo)所在位置 editText.setSelection(str.length()); } }
4、通過(guò)InputFilter來(lái)實(shí)現(xiàn)。
實(shí)現(xiàn)InputFilter過(guò)濾器,需要覆蓋一個(gè)叫filter的方法。
public abstract CharSequence filter ( CharSequence source, //輸入的文字 int start, //開始位置 int end, //結(jié)束位置 Spanned dest, //當(dāng)前顯示的內(nèi)容 int dstart, //當(dāng)前開始位置 int dend //當(dāng)前結(jié)束位置 );
下面的實(shí)現(xiàn)使得EditText只接收字符(數(shù)字、字母和漢字)和“-”“_”,Character.isLetterOrDigit會(huì)把中文也當(dāng)做Letter。
editText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if ( !Character.isLetterOrDigit(source.charAt(i)) && !Character.toString(source.charAt(i)) .equals("_") && !Character.toString(source.charAt(i)) .equals("-")) { return ""; } } return null; } });
另外使用InputFilter還能限制輸入的字符個(gè)數(shù),如
EditText tv =newEditText(this); int maxLength =10; InputFilter[] fArray =new InputFilter[1]; fArray[0]=new InputFilter.LengthFilter(maxLength); tv.setFilters(fArray);
上面的代碼可以限制輸入的字符數(shù)最大為10。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android EditText限制輸入字?jǐn)?shù)的方法
- Android編程中EditText限制文字輸入的方法
- Android開發(fā)中給EditText控件添加TextWatcher監(jiān)聽實(shí)現(xiàn)對(duì)輸入字?jǐn)?shù)的限制(推薦)
- Android EditText限制輸入字符的方法總結(jié)
- Android TextWatcher監(jiān)控EditText中的輸入內(nèi)容并限制其個(gè)數(shù)
- Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例
- Android最簡(jiǎn)單的限制輸入方法(只包含數(shù)字、字母和符號(hào))
相關(guān)文章
Android自定義控件簡(jiǎn)單實(shí)現(xiàn)側(cè)滑菜單效果
這篇文章主要為大家詳細(xì)介紹了Android自定義控件打造史上最簡(jiǎn)單的側(cè)滑菜單的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06Android仿泡泡窗實(shí)現(xiàn)下拉菜單條實(shí)例代碼
最近參與android的項(xiàng)目開發(fā),其中遇到這樣的需求:點(diǎn)擊下拉按鈕,顯示出所有的條目,有刪除和點(diǎn)擊功能,點(diǎn)擊后將條目顯示。下面通過(guò)實(shí)例代碼給大家介紹下Android仿泡泡窗實(shí)現(xiàn)下拉菜單條效果,需要的朋友參考下吧2017-05-05實(shí)例講解Android應(yīng)用開發(fā)中TabHost的使用要點(diǎn)
這篇文章主要介紹了Android應(yīng)用開發(fā)中TabHost的使用要點(diǎn),文中以實(shí)例講解了TabHost與Tab的布局方法,需要的朋友可以參考下2016-04-04Android 使用VideoView播放MP4的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了Android 使用VideoView播放MP4的簡(jiǎn)單實(shí)現(xiàn),實(shí)現(xiàn)簡(jiǎn)單的播放功能,播放手機(jī)本地的MP4文件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Android編程動(dòng)態(tài)修改RelativeLayout寬高的方法
這篇文章主要介紹了Android編程動(dòng)態(tài)修改RelativeLayout寬高的方法,涉及Android動(dòng)態(tài)布局的相關(guān)技巧,需要的朋友可以參考下2015-12-12Android實(shí)現(xiàn)app應(yīng)用多語(yǔ)言切換功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)app應(yīng)用多語(yǔ)言切換功能的相關(guān)資料,類似于微信的語(yǔ)言切換,感興趣的小伙伴們可以參考一下2016-08-08Android網(wǎng)絡(luò)技術(shù)HttpURLConnection詳解
這篇文章主要為大家詳細(xì)介紹了Android網(wǎng)絡(luò)技術(shù)HttpURLConnection的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07