首页 文章

CodenameOne用键盘滚动问题

提问于
浏览
1

当显示的表单不适合屏幕时,我可以按预期滚动到底部 . 当我按下其中一个字段时,键盘显示,键盘打开时,我可以滚动到屏幕的底部(再次,如预期的那样),与我按下的字段无关 .

Example Screenshots:

滚动到底部没有键盘:

Scroll to bottom with no keyboard

使用键盘滚动到底部:

Scroll to bottom with keyboard:

但是,当窗体显示 does 适合屏幕时,窗体不会在键盘变为活动状态时滚动,隐藏字段 . 在这个例子中,我减少了适合屏幕的字段数量,当我按下其中一个键盘显示时不会隐藏的字段时,我无法向下滚动到最后一个字段(共14个字段) ):

No scroll

当我最初按下一个隐藏在键盘上的字段(例如最后一个字段)时,我再次能够滚动:

Scroll Small

有没有办法在键盘隐藏东西时始终确保滚动?

这个代码:

public void start() {
    if (current != null) {
        current.show();
        return;
    }
    Form hi = new Form();

    for (int i = 0; i < 20; i++) {
        hi.addComponent(getEntry(i + 1));
    }
    hi.show();
}

public Container getEntry(int val) {
    Container c = new Container();
    c.setLayout(new BorderLayout());
    TextField tf = new TextField() {
        @Override
        protected Dimension calcPreferredSize() {
            return new Dimension(Display.getInstance().getDisplayWidth(), 70);
        }
    };
    tf.setConstraint(TextField.DECIMAL);
    tf.setText(val + "");
    c.add(BorderLayout.CENTER, tf);
    return c;

}

这两个测试之间的唯一区别是 i 的值,所以我有更多的字段,而不是屏幕可以显示的或足够的 . 在我的情况下,值分别为 2014 .

这是使用Android设备测试的 .

1 回答

相关问题