【问题标题】:After changing Edittext's inputType, the entered digits for the Edittext are not working properly更改 Edittext 的 inputType 后,Edittext 的输入数字无法正常工作
【发布时间】:2016-09-11 17:41:33
【问题描述】:

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

【问题讨论】:

    标签: android android-edittext digits


    【解决方案1】:

    此代码将纯文本更改为密码文本和 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 });
    

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多