TextFields无法在codenameone

时间:2015-12-17 07:55:37

标签: java codenameone

我在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'价值观彼此重叠。

the text being bolded

第二张图片是您按下虚拟键盘上的后退按钮以删除' 0'后面的图像。

enter image description here

第三张图片显示了如果继续尝试输入内容会发生什么,

enter image description here

最后,第四张图显示了TextField失去焦点后的样子(按下另一个TextField)。

enter image description here

更多细节

这是在Android设备上复制的,使用版本4.2.2和4.4.2。 这在更小的屏幕上更容易重现;我相信这是因为TextField在屏幕外的错误的性质。

1 个答案:

答案 0 :(得分:1)

尝试将表单的布局设置为

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