我有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) {
}
}
答案 0 :(得分: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应该没有问题。