我已经测试了很多在 TextField 中给出数字和密码约束的方法。但它不起作用,请参见下面的代码。
textField.setConstraint(TextField.NUMERIC | TextField.PASSWORD);
textField.setInputModeOrder(new String[]{"123"});
以上代码应该适用于非触控手机。但它不适用于触摸手机。所以我为 VKB
设置了输入模式值,并将 TextField
与 VKB
绑定(bind),请参阅此代码。
TextField txt = new TextField();
txt.setConstraint(TextField.NUMERIC |TextField.PASSWORD);
txt.setInputModeOrder(new String[]{"123"});
VirtualKeyboard vkb = new VirtualKeyboard();
vkb.setInputModeOrder(new String[]{VirtualKeyboard.NUMBERS_MODE});
VirtualKeyboard.bindVirtualKeyboard(txt, vkb);
VirtualKeyboard.NUMBERS_MODE
在我使用上面的代码时不起作用。 VKB
显示为通常的格式。这意味着 AlphaNumeric
格式。为什么会这样显示?
最佳答案
这是 LWUIT 中的一个错误,感谢您提醒我们注意它,我将在接下来的几周内尝试修复它。它会更快,但我们需要尽快飞往 JavaOne。
如果您想在本地尝试修复,只需在 VirtualKeyboard.java 中更新此方法:
public void setInputType(int inputType) {
if((inputType & TextArea.NUMERIC) == TextArea.NUMERIC ||
(inputType & TextArea.PHONENUMBER) == TextArea.PHONENUMBER) {
setInputModeOrder(new String []{NUMBERS_MODE});
return;
}
if((inputType & TextArea.DECIMAL) == TextArea.NUMERIC) {
setInputModeOrder(new String []{NUMBERS_SYMBOLS_MODE});
return;
}
setInputModeOrder(defaultInputModeOrder);
}
关于java - 为什么数字约束在 LWUIT 中的虚拟键盘上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579142/