Android修行笔记(三):文本编辑框限制输入字符及长度限制指示控件


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) });
 
 
 

你可能感兴趣的:(android)