我已经测试了许多方法来在TextField中提供数字和密码约束。但它不起作用,请参阅下面的代码。
textField.setConstraint(TextField.NUMERIC | TextField.PASSWORD);
textField.setInputModeOrder(new String[]{"123"});
以上代码适用于非触控手机。但它不适用于触控手机。所以我设置了VKB
的输入模式值,并将TextField
与VKB
绑定,请参阅此代码。
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
格式。为什么会这样显示?
答案 0 :(得分:3)
这是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);
}