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

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

【问题讨论】:

    标签: android exception math android-edittext


    【解决方案1】:

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

    【讨论】:

    • 请注意,即使在使用逗号的国家/地区,某些键盘(例如三星股票)也会始终提供点作为小数分隔符。在键盘固定之前,没有办法解决它。请参阅此处了解我的解决方法:stackoverflow.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.-"
        

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

        【讨论】:

          猜你喜欢
          • 2011-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-24
          • 2011-10-18
          • 1970-01-01
          • 2014-11-20
          相关资源
          最近更新 更多