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

标签 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 后,由于某些原因,其数字无法正常工作。它允许输入特殊字符。如何改进我的代码以使其正常工作?

最佳答案

此代码将纯文本更改为密码文本,反之亦然。

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

关于android - 更改 Edittext 的 inputType 后,Edittext 输入的数字无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37245350/

相关文章:

android - 如何在 Jetpack compose 中创建角度渐变?

android布局对齐textview和button

单击按钮后Android打开上下文菜单

android - EditText 填充属性不适用于 API 21 和 22

android格式edittext每4个字符后显示空格

r - 如何停止 read.table 在 R 中以不同精度舍入数字?

android - 没有崩溃日志,但稳定性低于 100%

android - 更改 Android EditText 背景颜色

c# - 指定的数字是多少?一个数字中有多少个?

algorithm - 找到小于 x 的 10 的最大幂的最快方法