【发布时间】:2015-12-17 23:16:48
【问题描述】:
我有一个问题,TextFields 在 Android 设备上使用 Codenameone 应用程序中的虚拟键盘获得焦点时无法正确更新。
我给TextField 一个值(值'0')并在彼此下方添加多个倍数。然后我按下TextField,它获得焦点,然后我输入了一些内容。输入值后,我在虚拟键盘上按下“下一步”,然后在下一个TextField 中输入值(“0” ) 变粗(有 2 个 '0' 值在另一个之上)。然后当我按下返回以清除“0”时,其中一个会消失,当我尝试输入时,如果文本覆盖了“0”值。
这似乎发生在下一个TextField 不在屏幕上时,并且似乎没有正确更新。当我删除一个“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 不在屏幕上的错误的性质。
【问题讨论】:
-
嗨,这个问题仍未得到答复。任何帮助表示赞赏
-
曾经解决过这个问题吗?我现在也有类似的问题。
标签: java codenameone