【问题标题】:Set edittext using only ",0123456789" programmatically in Android?在Android中以编程方式仅使用“,0123456789”设置edittext?
【发布时间】:2012-07-17 09:02:09
【问题描述】:

我的问题是这个。

我可以用xml说

android:digits="0123456789,"

但这次我要通过 java 代码添加它。

customEditText.setKeyListener(DigitsKeyListener.getInstance("0123456789,"));

不起作用。应用程序给了我与 android:InputType="number"

相同的结果

那么有没有其他方法可以使用 java 来表示 android:digits?

已编辑

所以我的问题不是如何使用 java 获取 android:InputType="number"

我的问题是如何让android:digits="0123456789," 与 java 一起使用。

此时我不在乎用户是否能看到字符。我只希望我的 edittext 字段只接受从 0 到 9 的数字和十进制逗号 (,)。

因为customEdittext真的是自定义的edittext我不能用xml atm。

【问题讨论】:

    标签: java android digits


    【解决方案1】:

    试试customEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);

    【讨论】:

    • 好吧,我不想使用数字。因为那样我就无法使用十进制逗号。
    【解决方案2】:
    EditText ed;
    ed.setInputType(InputType.TYPE_CLASS_NUMBER);
    

    docs 也可能有帮助

    【讨论】:

    【解决方案3】:

    根据Android文档TYPE_NUMBER_FLAG_DECIMAL应该可以工作http://developer.android.com/reference/android/text/InputType.html

    但是,如果您只使用TYPE_NUMBER_FLAG_DECIMAL,用户也可以输入字母。

    但幸运的是,Haresh Chaudhary 提供了正确答案,两者都必须使用,TYPE_CLASS_NUMBERTYPE_NUMBER_FLAG_DECIMAL。我尝试了他的解决方案,它奏效了。

    尽管我使用了 setInputType 而不是 setRawInput:

    yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
    

    【讨论】:

      【解决方案4】:

      你试过customEditText.setRawInputType(InputType.TYPE_CLASS_NUMBER)吗?

      参考:InputType

      【讨论】:

      • 好吧,我不想使用数字。因为那样我就无法使用十进制逗号。
      • 您在哪个版本的 android 上进行测试? DigitsKeyListener.getInstance("0123456789,") 在 2.3、4.0 和 4.1 上为我工作
      • galaxy s 2.3.3 和galaxy nexus 4.0.3
      【解决方案5】:

      尝试将 xml 布局中的android:inputType="number" 添加到您的EditText (link)

      【讨论】:

      • 这次我不能,因为代码。我只能使用 java 来完成。而且我不想让我的 edittext 字段只接受数字 0-9 和十进制逗号 (,)。
      猜你喜欢
      • 2011-11-10
      • 1970-01-01
      • 2012-07-30
      • 2016-11-10
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 2017-12-30
      • 2021-06-21
      相关资源
      最近更新 更多