Ada*_*unn 20 android numeric-keypad
对于一个EditText盒子,用户应该只输入有效数字,所以我正在使用android:inputType="numberDecimal".不幸的是,Android提出的软键盘只有顶行的数字,而接下来的三行有各种其他符号(美元符号,百分号,感叹号,空格等).由于numberDecimal只接受数字0-9,负号和小数点,因此使用"手机"软键盘(3x3网格中的0-9,加上其他一些符号)会更有意义.这将使按钮更大并且更容易被击中(因为它是4x4网格而不是同一屏幕区域中的10x4网格).不幸的是,使用android:inputType="phone"允许非数字字符,如括号
我试图使用android:inputType="numberDecimal|phone",但numberDecimal位标志的方面似乎被忽略了.我也试过android:inputType="phone"结合使用android:digits="0123456789-.",但仍然允许多个负号或小数点(inputType="number"对于这样的事情有非常好的错误检查,并且不会让用户输入它).我也尝试android:inputType="phone"在xml布局文件中使用,同时DigitsKeyListener在java代码中使用a ,但是那只是使用默认数字软键盘(只有顶行有数字的键盘)(它似乎设置InputType.TYPE_CLASS_NUMBER,这使得InputType.TYPE_CLASS_PHONE集合无效通过xml布局).
编写自定义IME不起作用,因为用户必须选择IME作为应用程序外的全局选项.
有没有办法使用"手机"式软键盘同时使用"数字"限制输入什么?
小智 23
我有同样的问题.这对我有用:
<item name="android:inputType">numberDecimal</item>
<item name="android:digits">0123456789.</item>
Run Code Online (Sandbox Code Playgroud)
希望这会对你有所帮助.
到目前为止,我决定扩展DigitsKeyListener并覆盖getInputType(),以便它返回InputType.TYPE_CLASS_PHONE.这允许我在DigitsKeyListener中使用方便的filter(),但同时使用TYPE_CLASS_PHONE软键盘.我是Android编程的新手,但这似乎没有破坏任何东西.代码是这样的:
import android.text.method.DigitsKeyListener;
import android.text.InputType;
public class CustomDigitsKeyListener extends DigitsKeyListener
{
public CustomDigitsKeyListener() {
super(false, false);
}
public CustomDigitsKeyListener(boolean sign, boolean decimal) {
super(sign, decimal);
}
public int getInputType() {
return InputType.TYPE_CLASS_PHONE;
}
}
Run Code Online (Sandbox Code Playgroud)
这样做有什么不妥(将getInputType()的返回切换到超类不想要的东西)?
| 归档时间: |
|
| 查看次数: |
34539 次 |
| 最近记录: |