2

我有 LWUIT 滚动的问题。我有一个包含 textarea 和 20 个标签的表单。当它滚动到底部时,它会跳到顶部(如循环)。对不起,我的英语不好 :(

这是我的代码

public class ScrollMidlet extends MIDlet {

public void startApp() {
    Display.init(this);
    Form mainForm = new Form("Scroll issue");
    mainForm.setLayout(new BoxLayout(BoxLayout.Y_AXIS));

    TextArea textArea = new TextArea("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum");
    mainForm.addComponent(textArea);

    for (int i = 0; i < 20; i++) {
        mainForm.addComponent(new Label("This is label " + (i + 1)));
    }
    mainForm.setScrollable(true);
    mainForm.show();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

}

4

1 回答 1

1

您需要使用setCyclicFocus方法禁用循环焦点。

mainForm.setCyclicFocus(false);

编辑:LWUIT 滚动工作基于当前组件的焦点。因此,当您按下向下箭头时,焦点将变为下面的元素,并且如果需要,表单会滚动。默认情况下,标签是不可聚焦的,因此它们不会获得焦点并且滚动将无法正常工作。要更正此问题,您应该修改标签创建。

Label l = new Label("This is label " + (i + 1));
l.setFocusable(true);
mainForm.addComponent(l);

此外,横向滚动阅读内容确实很糟糕的用户体验,因此您应该禁止横向滚动。

mainForm.setScrollableX(false);
mainForm.setScrollableY(true);

现在 setCyclicFocus 应该可以正常工作了。

于 2013-06-17T14:38:24.370 回答