1、字數輸入限制顯示控件
先看看效果圖的紅色區域部分

每次使用的時候只要在xml中添加 EditTextLengthIndicate 控件,並在
代碼中加入 editTextLengthIndicate.bindEditText( editText, length) 就
能在界面中動態顯示圖中的紅色區域信息,指示用戶的輸入操作。
代碼如下
/** * 繼承自TextView, 用來顯示指定文本框當前輸入的字數限制 */ public class EditTextLengthIndicate extends TextView{ private EditText mEditText; private int mMaxLength; public void bindEditText(EditText et, int maxLength) { mEditText = et; mMaxLength = maxLength; setText(et.getText().length() + "/" + mMaxLength); if(et != null && maxLength > 0) { et.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub String str = s.toString(); int length = str.length(); setText(length + "/" + mMaxLength); } }); } } }
2、限制編輯框只可以輸入字母、數字和下划線
方法1:
<EditText
android:dights = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_" />
存在問題的方法2:
使用InputFilter,不過Character.isLetterOrDigit會把中文也當做Letter,故這個方法不能限制到中文的輸入。
InputFilter filter = 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; } };
3、限制編輯框輸入字數
方法1:在xml中使用android:maxLength來限制
方法2:使用LengthFilter來動態限制
editText.setFilters( new InputFilter[]{new InputFilter.LengthFilter(MAX_LENGTH) });