android中十进制分隔符用逗号代替圆点的软键盘

android中十进制分隔符用逗号代替圆点的软键盘,android,Android,我已经阅读了一些关于这个问题的文章,有些没有得到回答,还有一些(从2011年开始)解释了这是一个已知的bug 这个问题解决了吗?现在可以用软键盘显示文化信息吗?我想显示一个十进制键盘,显示一个“,”而不是十进制分隔符的“点”。我通过扩展NumberKeyListener来接受“,”和“.”,解决了这个问题, 并推翻: @Override public int getInputType() { return InputType.TYPE_CLASS_NUMBER | I

我已经阅读了一些关于这个问题的文章,有些没有得到回答,还有一些(从2011年开始)解释了这是一个已知的bug


这个问题解决了吗?现在可以用软键盘显示文化信息吗?我想显示一个十进制键盘,显示一个“,”而不是十进制分隔符的“点”。

我通过扩展
NumberKeyListener
来接受“,”和“.”,解决了这个问题, 并推翻:

@Override
public int getInputType() {
   return InputType.TYPE_CLASS_NUMBER 
          | InputType.TYPE_NUMBER_FLAG_DECIMAL 
          | InputType.TYPE_NUMBER_FLAG_SIGNED;
}
此外,我在EditText上设置了一个TextWatcher,它将
PostTextChanged()
中的所有“.”替换为“.”


但我无法在软键盘上显示逗号。

您可以使用以下解决方法将逗号作为有效输入:-

通过XML:

<EditText
    android:inputType="number"
    android:digits="0123456789.," />
EditText input = new EditText(THE_CONTEXT);
input.setKeyListener(DigitsKeyListener.getInstance("0123456789.,"));

这样,Android系统将显示数字键盘,并允许输入逗号。希望有帮助:)

在android名称空间中,您可以使用:

android:inputType="numberDecimal"

这使您能够输入“.”

如果不创建自己的软键盘,则无法在软键盘中不显示“.”。 我找到的解决方案是:

<EditText
    android:inputType="numberDecimal"
    android:digits="0123456789," />


这样,当您按下软键盘中的“.”时,什么也不会发生;只允许使用数字和逗号

谢谢。通过编程,代码正在工作。我的修复方法如下:[请参见此处]()DigitsKeyListener现在接受locale,这使得软输入键盘根据locale接受“,”或“.”作为十进制分隔符。