【问题标题】:CodenameOne scrolling issue with keyboardCodenameOne 键盘滚动问题
【发布时间】:2017-01-30 20:30:58
【问题描述】:

当显示的表单不适合屏幕时,我可以按预期滚动到底部。然后当我按下其中一个字段时,键盘会显示出来,当键盘向上时,我可以滚动到屏幕底部(再次,正如预期的那样),与我按下的字段无关。

示例截图:

不使用键盘滚动到底部:

使用键盘滚动到底部:

但是,当显示确实适合屏幕的表单时,当键盘变为活动状态时,表单不会滚动,从而隐藏字段。 在此示例中,我减少了适合屏幕的字段数量,当我按下键盘显示时不会隐藏的字段之一时,我无法向下滚动到最后一个字段(总共 14 个字段):

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

有没有办法在由于键盘隐藏内容时始终确保滚动?

代码:

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 设备测试的。

【问题讨论】:

  • 这听起来像是虚拟键盘的不当行为,它可能会测试isScrollable() 标志,在这种情况下它是正确的,因此试图对其“聪明”。请就此提出问题。

标签: codenameone


【解决方案1】:

似乎这仍然是一个悬而未决的问题,请在此处查看:Ability to scroll Form/Components while virtual keyboard is showing #361

【讨论】:

  • 该问题无关。过去每次你开始滚动键盘都会自动折叠
猜你喜欢
  • 1970-01-01
  • 2017-06-15
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
相关资源
最近更新 更多