Android编辑文本屏蔽

时间:2015-12-14 10:35:59

标签: java android

我想添加遮罩.. 像00000-0000000-0

etusercnic.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            try {
                String str = s.toString();
                if (s.length() == 5 || s.length() == 13) {
                    str += "-";
                    etusercnic.setText(str);
                    etusercnic.setSelection(str.length());
                }
            } catch (Exception ignored) {
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });

当我第一次输入值时,它完美地工作,但当我删除它放置的任何数字时 - 签名。那我该怎么办..

3 个答案:

答案 0 :(得分:3)

我确定你为CNIC屏蔽了它:D

无论如何,这是我的掩版版本,它完美无缺:

        etusercnic.setRawInputType(InputType.TYPE_CLASS_NUMBER); 
        etusercnic.addTextChangedListener(new TextWatcher() {
        int len = 0;
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            String val = etusercnic.getText().toString();
            if((val.length()==5 && len <val.length()) || (val.length()==13 && len<val.length())){
                etusercnic.append("-");
            }


        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            String str = etusercnic.getText().toString();
            len = str.length();

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

您的Edittext的xml应该与此类似:

 <EditText
    android:id="@+id/nic_field"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/signup_cnic_hint"
    android:singleLine="true"
    android:inputType="date"
    android:maxLength="15"
    android:textColor="#000000"
    android:textColorHint="#808080"
    android:textSize="15sp" 
     />

答案 1 :(得分:0)

祝你的项目好运!我知道在Android Studio的Android程序中使用EditText上的遮罩的最简单方法是使用MaskedEditText库(GitHub link)。 它是一种带有Watcher的自定义EditText,允许您设置不同颜色的提示(如果您想要,即使用户已经开始输入也可用),掩码并且它非常易于使用: - )

在你的情况下这很容易:

compile 'ru.egslava:MaskedEditText:1.0.5'

<br.com.sapereaude.maskedEditText.MaskedEditText
    android:id="@+id/phone_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:typeface="monospace"
    mask:allowed_chars="1234567890"
    mask:mask="#####-#######-#"
    android:hint="0000000000000"
    app:keep_hint="true"
    />

就是这样!祝你好运!

enter image description here

答案 2 :(得分:-1)

经过一些帮助..我找到了办法。正确答案......完美的工作。 :)

 etusercnic.addTextChangedListener(new TextWatcher() {
        int len = 0;

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            String str = etusercnic.getText().toString();
            len = str.length();
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            try {
                String str = s.toString();

                String val = etusercnic.getText().toString();
                if ((val.length() == 5 && len < val.length()) || (val.length() == 13 && len < val.length())) {
                    str += "-";
                    etusercnic.setText(str);
                    etusercnic.setSelection(str.length());
                }
            } catch (Exception ignored) {
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });