android - 如何将我的 EditText 输入限制为数字(可能是十进制和有符号)输入?

标签 android android-edittext

我已阅读 Android: Limiting EditText to numbersHow do I show the number keyboard on an EditText in android? .不幸的是,它们似乎都不符合我的需求。

我想将我的 EditText 输入限制为仅限数字。但是,我也希望允许有符号和/或十进制输入。

这是我当前的代码(我需要以编程方式执行此操作):

EditText edit = new EditText(this);

edit.setHorizontallyScrolling(true);
edit.setInputType(InputType.TYPE_CLASS_NUMBER);

有了这个,我的 EditText 愉快地将所有输入限制为数字。不幸的是,它不允许任何其他内容,例如小数点。

如果我将该行更改为 edit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL),EditText 将接受所有输入(这不是我想要的......)。

我尝试过组合标志(绝望地想看看它是否可行):

edit.setInputType(InputType.TYPE_CLASS_NUMBER);
edit.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL)
edit.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED)

这也不起作用(EditText 像往常一样接受所有输入)。

那么,我该怎么做呢?

最佳答案

没有理由使用setRawInputType(),只需使用setInputType()。但是,您必须将类和标志与 OR 运算符结合起来:

edit.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);

关于android - 如何将我的 EditText 输入限制为数字(可能是十进制和有符号)输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919360/

相关文章:

java - 使用 simpleframework 时 Android 模拟器中的垃圾回收过多 (GC_FOR_MALLOC)

android - 将焦点转移到另一个 RecyclerView 项目 (CardView) 中的下一个 EditText

具有文本密码输入类型的Android EditText不会通过双击选择所有字符

java - 多次调用 onFocusChange 导致 "hasFocus"变量不可用

android - 地理编码器返回多个地址

android - 适用于 Android 的 Google 文档 API

java - 在工具栏支持操作栏中设置搜索不起作用,为什么?

java - 尝试返回自定义类对象时出现 AIDL 错误

java - 向跨度字符串添加额外的文本可以消除我的粗体文本。

android - EditText 的高度不会扩展到其父级的高度