对于EditText框,用户只能输入有效的数字,所以我使用的是android:inputType =“numberDecimal”。不幸的是,Android带来的软键盘的数字只有顶排,而接下来的3行有各种其他符号(美元符号,百分号,感叹号,空格等)。由于numberDecimal仅接受数字0-9,负号和小数点,所以使用“手机”软键盘(3×3网格中的0-9加上其他符号)会更有意义。这将使按钮更大更容易击中(因为它是一个4×4网格而不是同一屏幕区域中的10×4网格)。不幸的是,使用android:inputType =“phone”可以允许非数字字符,如括号
我试图使用android:inputType =“numberDecimal | phone”,但是bit标志的numberDecimal方面似乎被忽略。我也尝试使用android:inputType =“phone”与android:digits =“0123456789-”组合使用,但仍然允许多个负号或小数点(inputType =“number”对于像这样的事情有很好的错误检查,并且不会让用户甚至键入它)。我也尝试在xml布局文件中使用android:inputType =“phone”,而在java代码中使用DigitsKeyListener,但是只是使用默认的数字软键盘(只有顶部的数字键盘)似乎设置InputType.TYPE_CLASS_NUMBER,这将使由xml布局设置的InputType.TYPE_CLASS_PHONE无效)。
编写自定义IME将不起作用,因为用户必须在应用程序之外选择IME作为全局选项。
有没有办法使用“手机”式的软键盘,同时也使用“数字”限制进入什么?