其他分享
首页 > 其他分享> > 为什么我不能强制EditTextPreference只接受数字?

为什么我不能强制EditTextPreference只接受数字?

作者:互联网

目标:使用EditTextPreference从用户处输入数字.

问题:我正在使用support.v7.preference,据我所知,该库在创建自定义DialogPreference(HowTo use support.v7.preference with AppCompat and potential drawbacks)时遇到了问题.无论如何,我试图创建一个扩展DialogPreference的NumberPickerPreference,但是得到了ClassCastException.

我还发现了另一种方法:以编程方式设置EditTextPreference对象的输入类型,如下所示:

    EditTextPreference pref = (EditTextPreference) findPreference("pref_edit_text");
    if (pref != null) {
       pref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
    }

没办法,我总是得到ClassCastException.

我尝试的最后一种方法:修改xml

android:inputType="numberDecimal"
android:digits="0123456789"

或android:numeric =“ integer”

再也没有办法,在对话框上我得到了完整的键盘,因此用户可以编写所有内容.

有没有一种方法可以正确地强制EditTextReference仅接受数字输入?

解决方法:

您可以通过将android:inputType =“ numberPassword”添加到XML文件来完成此操作
然后,您可以像这样在Java中以编程方式设置自定义键盘:

 yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); 

接下来,您可以创建一个自定义类:

  private class YourNumericKeyboardMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        return source;
    }
}

最后一步是将其实现到您的EditText,以使其仅显示数字:

 yourEditText.setTransformationMethod(new YourNumericKeyboardMethod());

完成所有这些步骤后,您应该会得到一个只有数字从0到9的键盘

标签:edittextpreference,android-support-library,java,android
来源: https://codeday.me/bug/20191108/2008407.html