Android修行筆記(三):文本編輯框限制輸入字符及長度限制指示控件


一、字數輸入限制顯示控件
 
先看看效果圖的紅色區域部分
 
每次使用的時候只要在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);
                }
                
     
            });
                
        }
        
    }
}

 

 
 
二、限制編輯框只能夠輸入字母、數字和下劃線
方法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; 
    } 
}; 

 

三、限制編輯框輸入字數
 
方法1:在xml中使用android:maxLength來限制
方法2:使用LengthFilter來動態限制
editText.setFilters( new InputFilter[]{new InputFilter.LengthFilter(MAX_LENGTH) });
相關文章
相關標籤/搜索