更改Edittext的inputType后,Edittext的输入数字无法正常工作

时间:2016-05-16 01:07:24

标签: android android-edittext digits

Activity.xml

    <EditText
        android:id="@+id/et_pwd"
        android:layout_width="300dp"
        android:layout_height="37dp"
        android:layout_marginBottom="15dp"
        android:drawableLeft="@drawable/icon_password"
        android:hint="Password"
        android:inputType="textPassword"
        android:maxLength="20"
        android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" />

按钮OnClickListner

if (et_password.getInputType() != (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)) {
   et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
   et_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}

首先,我在EditText上设置数字,如果我单击一个按钮,它会实现上面的代码,该代码会更改其inputType。在我更改inputType之前,它的数字正常工作。但是,在更改其inputType之后,由于某些原因,其数字不起作用。它允许输入特殊字符。如何改进我的代码才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

此代码将纯文本更改为密码文本和Vise-Versa。

public void onClick(View view) {
         if(inputPassword.getInputType() == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
              inputPassword.setInputType( InputType.TYPE_CLASS_TEXT |
                                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
         }else {
              inputPassword.setInputType( InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
         }
         inputPassword.setSelection(inputPassword.getText().length());
    }

并将此过滤器代码用于数字。

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))) {
                return "";
            }
        }
        return null;
    }
};
edit.setFilters(new InputFilter[] { filter });