安卓软键盘中小数点用逗号代替的方法

3

我一直在阅读关于这个问题的一些帖子,有些没有得到回答,而其他的(来自2011年)则解释了这是一个已知的错误。

这个问题已经解决了吗?现在是否可以显示带有语言环境信息的软键盘?我想显示一个十进制键盘,用“,”代替小数点作为小数分隔符。


我的修复在这里:输入链接描述 - Alex K
2
DigitsKeyListener 现在接受本地化参数,在软输入键盘上基于本地化设置,可以接受“,”或“.”作为十进制分隔符。 - Padmaja Seshadri
4个回答

17

您可以使用以下方法来包含逗号作为有效输入:

通过 XML:

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

以编程方式:

EditText input = new EditText(THE_CONTEXT);
input.setKeyListener(DigitsKeyListener.getInstance("0123456789.,"));

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


2
谢谢。通过编程代码正在运行。 - Ravikumar11

3

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

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

这样,当你按下软键盘中的“.”时,不会发生任何事情;只允许使用数字和逗号。


2
我通过扩展NumberKeyListener来接受“,”和“。”来解决了这个问题,并重写了以下内容:
@Override
public int getInputType() {
   return InputType.TYPE_CLASS_NUMBER 
          | InputType.TYPE_NUMBER_FLAG_DECIMAL 
          | InputType.TYPE_NUMBER_FLAG_SIGNED;
}

另外,我在EditText上设置了一个TextWatcher,在afterTextChanged()方法中用逗号替换了所有的'.'。但是我无法在软键盘上显示逗号。

-4

在 Android 命名空间中,您可以使用:

android:inputType="numberDecimal"

这使您能够输入“.”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接