【问题标题】:TextFields not updating/repainting correctly on codenameoneTextFields 没有在代号上正确更新/重新绘制
【发布时间】: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


【解决方案1】:

尝试将表单的布局设置为

setLayout(new BoxLayout(BoxLayout.Y_AXIS));
setScrollableY(true);

【讨论】:

  • 嗨,在发生这种情况的实际应用程序(不是测试应用程序)中,它确实使用 BoxLayout (Y-AXIS) 并且具有可滚动性。不幸的是,它仍然具有相同的行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多