我一直在尝试调整我的TextInputEditText
,它当前显示了一个数字键盘(它在xml中有android:inputType="numberDecimal"
(,以允许输入/
字符(通过单击ui中的一个按钮,将/
附加到EditText
(。
我想要实现的是:一个数字键盘&允许在EditText
中输入/
我所尝试的一切要么没有显示数字键盘,要么不允许我将/
添加到EditText
。
我尝试过的东西:
- 将
android:digits="0123456789./"
添加到xml
结果:它仍然是一个数字输入,不会让我.append("/")
- 在xml中设置
android:inputType="text"
,并在活动的onCreate()
中设置以下内容
input.setFilters(new InputFilter[] {(src, start, end, dst, dstart, dend) -> {
if(src.toString().matches("[0123456789./]+")){
return src;
}
return "";
}});
结果:我没有数字键盘(尽管我只能输入我需要的字符,这很好(
android:inputType="text"
和android:digits="0123456789./"
,因为这似乎在各种SO答案上被建议了很多次(我认为一定在某个时候起了作用(
结果:非数字键盘(即常规文本输入键盘(
从xml中删除android:inputType
和android:digits
,并将下面的内容添加到活动的onCreate()
中,似乎可以做到这一点。
input.setKeyListener(DigitsKeyListener.getInstance("0123456789./"));
然而,我并不完全清楚这是否应该或将始终有效-请参阅以下DigitsKeyListener
文档中的注释
对于KeyListener的所有实现,这个类只关心硬件键盘。软件输入方法没有义务触发此类中的方法。
来源:https://developer.android.com/reference/android/text/method/DigitsKeyListener