如何在 EditText 中输入“负十进制数”?

Posted

技术标签:

【中文标题】如何在 EditText 中输入“负十进制数”?【英文标题】:How to enter a "Negative Decimal Number" in EditText? 【发布时间】:2013-07-22 15:30:51 【问题描述】:

我正在制作一个计算器,并且我想确保用户能够输入“负十进制数” 我在 xml 文件中分别看到了该选项,例如为了放置十进制数,EditText 的 inputType 必须是numberDecimal 和负数 inputType 必须是“numberSigned”,但我需要两者。如果我选择 inputType 作为“文本”,那么如果不是数字,用户就可以输入任何引发异常的内容。我也不确定如何解决这个问题。

【问题讨论】:

【参考方案1】:

您可以将两者与“|”一起使用操作员。只需指定“numberSigned|numberDecimal”。

【讨论】:

请注意,即使在使用逗号的国家/地区,某些键盘(例如三星股票)也会始终提供点作为小数分隔符。在键盘固定之前,没有办法解决它。请参阅此处了解我的解决方法:***.com/a/51983392/238664【参考方案2】:

EditText的布局中添加这个:

android:digits="0123456789-."

您可以在此处指定更多内容,例如,如果您希望用户输入sin() 函数。

【讨论】:

【参考方案3】:

正如@a11n 所说,您可以使用管道运算符来指定两者:

<EditText
    ...
    android:inputType="numberSigned|numberDecimal"
    ... />

有效数字:正负小数和整数。

【讨论】:

【参考方案4】:

有些手机在同一个按钮上有小数点和负数,所以不能做负数。我想出了一种方法,您可以通过简单地添加来分隔按钮:

android:inputType="numberSigned|numberDecimal|textPersonName"
android:digits="0123456789.-"

这样你仍然有数字键盘布局,但负数和小数按钮将是分开的,你不能使用任何其他数字来搞乱应用程序。

【讨论】:

以上是关于如何在 EditText 中输入“负十进制数”?的主要内容,如果未能解决你的问题,请参考以下文章

0 到 10 范围内任何正或负十进制数的正则表达式

负十进制数/字符串到 IEEE 单精度格式

Android Studio 第五十三期 - 自定义EditText密码键盘

如何在 Android 中禁用 EditText

如何限制 EditText 中的输入?

如何在EditText输入图片和文本