逗号在三星安卓键盘上无法正常使用。

14

我将InputType.TYPE_NUMBER_FLAG_DECIMAL或InputType.TYPE_CLASS_NUMBER设置为我的EditText,并希望使用逗号作为小数分隔符。因此,我将数字"0123456789,."设置为EditText。

editText.keyListener = DigitsKeyListener.getInstance("0123456789.,")

我在EditText上设置了一个TextWatcher来处理用户输入。当我在Android模拟器键盘上点击逗号(“,”)时,它按预期工作,但如果我在我的手机上构建(该手机配备三星键盘),逗号键被禁用且无法使用。我搜索了很多,但找不到解决方法。
对此问题有什么想法吗?

enter image description here


1
很不幸,没有任何变化。我尝试了太多东西。 - Darkhmar
你也看到这篇帖子了吗?如果上面的方法不起作用,可以尝试这个链接https://dev59.com/rW865IYBdhLWcg3wa980#6280607。 - David Kroukamp
1
@Darkhmar:你找到任何解决方案了吗?我也遇到了同样的问题。 - UrMi
2
很遗憾,我找不到任何解决方法来修复这个问题。我只是将点和逗号赋予了相同的操作。但我会稍后处理这个问题,如果我能够解决这个问题,我会更新帖子。(或者如果您解决了这个问题,当然可以与我们分享解决方案 :D) - Darkhmar
4
新闻?我也面临同样的问题。 - Innova
显示剩余3条评论
2个回答

0

现在是2022年,但这个问题仍然存在(至少在三星设备上):)

我通过为EditText添加一个TextChangedListener并检查最后输入的字符是否等于(特定国家的)千位分隔符来解决这个问题。如果是,我就用特定国家的小数分隔符替换它:

 public class EditTextTausenderErsetzer implements TextWatcher{
 ...
    @Override
    public void afterTextChanged(Editable editable) 
    {
      // determine country specific separators
      // char thousandsSep = .., char commaSep =..

      int comma_index = editable.toString().indexOf(commaSep);
        if(comma_index == -1) {  // no comma so far, thus there might be a "." which shall be a comma separator
         if (editable.toString().indexOf(thousandsSep) != -1) {
            if (editable.toString().indexOf(thousandsSep, (editable.length()-1)) == (editable.length() - 1)) {
                    editable.delete(editable.length() - 1, editable.length() - 1);
                    editable.insert(editable.length(), commaSep + "");

                }
            }
        }
        // ...
        // do other stuff like setting automatically thousands separators

        

如果您的应用程序管理千位分隔符并且不允许用户设置这些内容,则此解决方案可行。


0

我是这样解决的

override fun afterTextChanged(editable: Editable) {
// If the user input from keyboard some special characters like dot, we replace it programmatically with comma
if (editable.toString().contains(".")) {
    editable.delete(editable.toString().length - 1, editable.toString().length)
    editable.insert(editable.toString().length, ",")
    return
} }

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