Android EditText限制輸入字符類型的方法總結(jié)
Android EditText限制輸入字符類型的方法總結(jié)
前言:
最近的項目上需要限制EditText輸入字符的類型,就把可以實現(xiàn)這個功能的方法整理了一下:
1、第一種方式是通過EditText的inputType來實現(xiàn),可以通過xml或者Java文件來設(shè)置。假如我要設(shè)置為顯示密碼的形式,可以像下面這樣設(shè)置:
在xml中
Android:inputType="textPassword"
在java文件中,可以用 myEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
當(dāng)然,還有更多的其他屬性用來進(jìn)行輸入設(shè)置。
2、第二種是通過android:digits 屬性來設(shè)置,這種方式可以指出要顯示的字符,比如我要限制只顯示數(shù)字,可以這樣:
android:digits="0123456789"
如果要顯示的內(nèi)容比較多,就比較麻煩了,將要顯示的內(nèi)容依次寫在里面。
3、通過正則表達(dá)式來判斷。下面的例子只允許顯示字母、數(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)用這個函數(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、通過InputFilter來實現(xiàn)。
實現(xiàn)InputFilter過濾器,需要覆蓋一個叫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é)束位置 );
下面的實現(xiàn)使得EditText只接收字符(數(shù)字、字母和漢字)和“-”“_”,Character.isLetterOrDigit會把中文也當(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還能限制輸入的字符個數(shù),如
EditText tv =newEditText(this);
int maxLength =10;
InputFilter[] fArray =new InputFilter[1];
fArray[0]=new InputFilter.LengthFilter(maxLength);
tv.setFilters(fArray);
上面的代碼可以限制輸入的字符數(shù)最大為10。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Android EditText限制輸入字?jǐn)?shù)的方法
- Android編程中EditText限制文字輸入的方法
- Android開發(fā)中給EditText控件添加TextWatcher監(jiān)聽實現(xiàn)對輸入字?jǐn)?shù)的限制(推薦)
- Android EditText限制輸入字符的方法總結(jié)
- Android TextWatcher監(jiān)控EditText中的輸入內(nèi)容并限制其個數(shù)
- Android EditText限制輸入整數(shù)和小數(shù)的位數(shù)的方法示例
- Android最簡單的限制輸入方法(只包含數(shù)字、字母和符號)
相關(guān)文章
Android IPC機制綁定Service實現(xiàn)本地通信
本文主要介紹Android IPC機制綁定Service 實現(xiàn)本地通信,通過圖解,代碼等方式給大家解釋Android IPC機制,需要參考的同學(xué)可以看一下2016-07-07
Android WebView 不支持 H5 input type="file" 解決方法
這篇文章主要介紹了Android WebView 不支持 H5 input type="file" 解決方法,需要的朋友可以參考下2017-06-06
Android中AutoCompleteTextView與MultiAutoCompleteTextView的用法
這篇文章主要介紹了Android中AutoCompleteTextView與MultiAutoCompleteTextView的用法,需要的朋友可以參考下2014-07-07
Android在線更新SDK的方法(使用國內(nèi)鏡像)
這篇文章主要介紹了Android在線更新SDK的方法,分別介紹了修改hosts文件使用谷歌官方鏡像更新及使用國內(nèi)鏡像更新SDK的方法,非常簡單實用,需要的朋友可以參考下2015-12-12
Android編程實現(xiàn)禁止StatusBar下拉的方法
這篇文章主要介紹了Android編程實現(xiàn)禁止StatusBar下拉的方法,涉及Android StatusBarManager相關(guān)屬性控制操作技巧,需要的朋友可以參考下2017-08-08

