TextInputEditText 显示数字键盘但也允许 /

TextInputEditText to show numeric keyboard but also allow /

我一直在尝试调整我的 TextInputEditText,它当前显示数字键盘(它在 xml 中有 android:inputType="numberDecimal")以允许输入 /字符(通过单击 ui 中的按钮将 / 附加到 EditText)。

我想要实现的:一个数字键盘&允许在EditText

中输入/

我尝试过的所有方法要么不显示数字键盘,要么不允许我将 / 添加到 EditText

我尝试过的事情:

  1. android:digits="0123456789./" 添加到 xml

结果:还是数字输入,不让我.append("/")

  1. 在 xml 中设置 android:inputType="text",在 activity 中设置以下 onCreate()
        input.setFilters(new InputFilter[] {(src, start, end, dst, dstart, dend) -> {
            if(src.toString().matches("[0123456789./]+")){
                return src;
            }
            return "";
        }});

结果:我没有数字键盘(虽然我只能输入我需要的字符,这很好)

  1. android:inputType="text"android:digits="0123456789./" 因为这似乎被建议 quite 几次关于各种 SO 答案(我认为一定在某些时候有效)。

结果:非数字键盘(即常规文本输入键盘)

从 xml 中删除 android:inputTypeandroid:digits 并将以下内容添加到 activity 的 onCreate() 似乎可以解决问题。

input.setKeyListener(DigitsKeyListener.getInstance("0123456789./"));

但是我并不完全清楚这是否应该或将始终有效 - 请参阅下面来自 DigitsKeyListener...

文档的注释

As for all implementations of KeyListener, this class is only concerned with hardware keyboards. Software input methods have no obligation to trigger the methods in this class.

来源:https://developer.android.com/reference/android/text/method/DigitsKeyListener