我读过Android:将EditText限制为数字,如何在android中的EditText上显示数字键盘?.不幸的是,它们似乎都不符合我的需求.
我想将EditText输入限制为仅限数字.但是,我还想允许签名和/或十进制输入.
这是我当前的代码(我需要以编程方式执行此操作):
EditText edit = new EditText(this);
edit.setHorizontallyScrolling(true);
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
Run Code Online (Sandbox Code Playgroud)
有了这个,我的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)
Run Code Online (Sandbox Code Playgroud)
这也不起作用(EditText照常接受所有输入).
那么,我该怎么做?
我有一个布局,有三个字段用于输入三个地图坐标.到现在为止还挺好.我在布局中使用android:inputType ="numberDecimal".当进入该字段时,用户获得数字小键盘.还好.
但是,当需要输入负坐标时,没有明显的方法可以做到这一点.
23.2342工作正常.232.3421工作正常.无法输入-11.23423 - 无法输入前导负号,甚至无法将坐标包装在()中.
我确信我可以将其更改为直接文本inputType,然后使用正则表达式来验证输入的内容实际上是一个数字坐标,处理错误消息回发给用户等等.但是我会而不是去那条路.
我用谷歌搜索和Stackoverflowed这个问题几个小时没有运气.有什么建议?