如何限制EditText输入内容

时间:2012-05-31 02:04:11

标签: android numbers android-edittext phone-number

我正在尝试创建一个简单的计算器,为用户提供EditText输入数字。 允许输入内容应为[1,2,3,4,5,6,7,8,9,0,.]

我知道可以使用以下代码来限制输入内容

android:digits="1234567890."
android:inputType="phone"

但是如何阻止用户在EditText Box中添加多个点(.)?

3 个答案:

答案 0 :(得分:3)

您可以在EditText中使用InputFilter限制字符:

EditText mEdit = (EditText)findViewById(R.id.mEdit);          
InputFilter[] filters = {new AdnNameLengthFilter()};  
mEdit.setFilters(filters);  
public static class AdnNameLengthFilter implements InputFilter  
    {  
        private int nMax;  

        public  CharSequence filter (CharSequence source, int start, int end, Spanned dest, int dstart, int dend)  
        {  
            Log.w("Android_12", "source("+start+","+end+")="+source+",dest("+dstart+","+dend+")="+dest);  

            if(dest.toString()=="."||( source.toString()==".")  
            {  
               //DO SOMTHING HERE  
            }else  
            {  
                //DO SOMTHING HERE
            }  
        }
    }

第二个选项是TextWatcher,用于按用户查找char输入:

mEditText = (EditText)findViewById(R.id.ET);
mEditText.addTextChangedListener(mTextWatcher);
TextWatcher mTextWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int arg1, int arg2,
                int arg3) {
            // YOU STRING BEFORE CHANGE
        }
        @Override
        public void onTextChanged(CharSequence s, int arg1, int arg2,
                int arg3) {
              // CHARS INPUT BY USER
        }
        @Override
        public void afterTextChanged(Editable s) {
              // AFTER TEXT CCHANGE In EDITTEXT BY USER
        }
    };

答案 1 :(得分:1)

使用TextWatcher检查输入的每个内容,并确定是否允许它进入EditText或忽略。

让自己成为一个并覆盖其方法以实现您想要的任何逻辑。

创建TextWatcher后,将其应用于EditText,如下所示:

edt.addTextChangedListener(mTextWatcher);

答案 2 :(得分:1)

您可以使用此digits属性android:digits="0123456789"