【问题标题】:how to set input type to be numberdecimal but also allow a "-"如何将输入类型设置为数字十进制但也允许“-”
【发布时间】:2011-03-25 01:55:42
【问题描述】:

我已将输入类型设置为 numberdecimal,但还想以编程方式使用“-”填充 editText。我可以添加文本,但我无法编辑文本,因为它不能确认数字十进制格式。关于如何说 inputtype 是 numberdecimal 但可以允许使用“-”的任何想法?

【问题讨论】:

    标签: android


    【解决方案1】:

    我可以通过如下设置digits xml 属性来实现这种行为:

    <EditText
        ...
        android:inputType="number"
        android:digits="0123456789-"/>
    

    以编程方式设置 (Set EditText Digits Programmatically):

    weightInput.setKeyListener(DigitsKeyListener.getInstance("0123456789-"));
    

    【讨论】:

      【解决方案2】:

      我设法做到了:

      android:inputType="number|numberSigned"    
      android:digits="0123456789-"
      

      【讨论】:

        【解决方案3】:

        我找到了一个非常简单的解决方案:

        editText.setKeyListener(new DigitsKeyListener(true, true));    
        

        第一个true是有符号输入,第二个true是十进制。
        希望有帮助

        【讨论】:

        • Gustavo,bemace,抱歉不清楚。我说的是数字之间的连字符。类似 1-800-555555 而不是数字前面的标志。
        【解决方案4】:

        您必须编写自己的KeyListener。您可以从NumberKeyListener 中的downloading the source 开始,然后从那里获取。

        马丁

        【讨论】:

        【解决方案5】:

        我有一个解决方案,可能会对您有所帮助:

        假设,您想输入 2-3 个带“-”号的数字,例如203-304-405.23-232.45,

        然后允许用户在不设置任何属性的情况下在 EditText 中输入此内容。 然后您可以使用“split()”函数分隔每个数字,但请确保标记之间应该有任何分隔符。

        然后

         String tokens[];
         strInput = edittext1.getText.toString();
         tokens = strInput.split(",");
        

        然后您可以将每个令牌分别作为令牌[0]、令牌[1]、 例如:

        num1 = tokens[0];
        num2 = tokens[1];
        

        希望对你有所帮助。

        享受!!

        【讨论】:

        • 感谢 Paresh 的见解...您正在谈论用户输入的文本的后处理,但不幸的是,我不能允许用户在 EditText 中输入除数字以外的任何内容。 InputType 必须固定为十进制 :(
        猜你喜欢
        • 1970-01-01
        • 2015-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多