我在TextFields
使用Android设备上的Codenameone应用中的虚拟键盘获得焦点时无法正确更新。
我给了TextField
一个值(值' 0')并在彼此之下添加了倍数。然后我按下了TextField
,在那里它获得了焦点,然后我输入了一些内容。输入值后,我按下'下一步'在虚拟键盘上,下一个TextField
(' 0')中的值变为粗体(其中2' 0'值相互叠加)。当我按下然后按下以清除“0”时,其中一个消失,当我尝试输入时,如果写在' 0'值。
这似乎发生在下一个TextField
离屏时,似乎无法正确更新。当我删除一个' 0'并且失去对TextFields的关注时,另一个' 0' 0也消失了,暗示它不正确。
文字提示也是如此。
我使用的测试应用程序:
代码示例
public void start() {
if(current != null){
current.show();
return;
}
Form hi = new Form("Hi World");
hi.addComponent(new Label("Hi World"));
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.addComponent(getEntry());
hi.show();
}
public Container getEntry() {
Container c = new Container();
c.setLayout(new BorderLayout());
Label lbl = new Label("Testing..");
TextField tf = new TextField();
tf.setConstraint(TextField.DECIMAL);
tf.setText("0");
c.add(BorderLayout.NORTH, lbl);
c.add(BorderLayout.CENTER, tf);
return c;
}
截图
在第一张图片中,您可以看到正在加粗的文字,实际上是2' 0'价值观彼此重叠。
第二张图片是您按下虚拟键盘上的后退按钮以删除' 0'后面的图像。
第三张图片显示了如果继续尝试输入内容会发生什么,
最后,第四张图显示了TextField失去焦点后的样子(按下另一个TextField)。
更多细节
这是在Android设备上复制的,使用版本4.2.2和4.4.2。
这在更小的屏幕上更容易重现;我相信这是因为TextField
在屏幕外的错误的性质。
答案 0 :(得分:1)
尝试将表单的布局设置为
setLayout(new BoxLayout(BoxLayout.Y_AXIS));
setScrollableY(true);