为什么我不能强制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