滚动不会移动

时间:2013-06-02 12:33:49

标签: scroll lwuit lwuit-form lwuit-list

我有一个包含列表的LWUIT表单,列表中添加了一些项目,项目本身就是字符串(我想将它们作为语句)。

返回

我的简单问题是最终用户无法看到整个语句(字符串)。我尝试了下面的方法,但滚动不会移动。

所有form.setScrollableY(true)form.setScrollabelX(true)form.setScrollable(true)

这是代码

import javax.microedition.midlet.*;
import com.sun.lwuit.layouts.*;
import com.sun.lwuit.*;

public class HelloLWUITMidlet3 extends MIDlet
{

  public void startApp()
  {
     com.sun.lwuit.Display.init(this);

     final com.sun.lwuit.Form form = new com.sun.lwuit.Form("");

     final com.sun.lwuit.List l = new com.sun.lwuit.List();

     l.addItem("MY favourite Science is computer Sciences");

     l.addItem("MY favourite   computer Science  subject is programming");

     l.addItem("MY favourite  programming language is java ");

     form.setScrollableY(true);

     form.setScrollableX(true);

     form.addComponent(l);

     form.show( );  
  }

  public void pauseApp()
  {

  }

  public void destroyApp(boolean unconditional)
  {

  }
}

1 个答案:

答案 0 :(得分:1)

首先,水平来回滚动阅读内容是 真的很糟糕的UX。这个答案只能解决垂直滚动问题。

您的代码的问题在于您要添加可滚动(List) 在另一个可滚动内部 (形成)。这会导致意想不到的结果,因为它是 不清楚哪个组件应该处理滚动。这可以修复 在表单中使用BorderLayout并将列表放在中心。

...
form.setScrollable(false);
form.setLayout(new BorderLayout());
form.addComponent(BorderLayout.CENTER, l);

...

这将启用垂直滚动,但水平滚动不会 工作

关于滚动的说明:

LWUIT的方法 滚动是基于Focus,这意味着容器滚动 因为聚焦元素不在屏幕上。这有其结果 LWUIT不支持比屏幕更大的滚动元素,因此, 您的列表不能水平滚动。 (来源:LWUIT mini FAQ

<强>建议:

最大元素高度被视为List中的组件高度。这个 使List组件足以显示“预格式化”的数据 特定方式,如文件夹详细信息列表的联系人列表。如果你 想要堆叠可变长度的文本,你应该
使用带有BoxLayoutY的表单并将您的文本放在各种TextAreas中。

void startApp() {
    Display.init()
    final Form form = new Form("Title");

    addItem(form, "String..");
    // as many times as you like
    addItem(form, "String..");

    form.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
    form.setScrollableY(true);
    form.show()
}


void addItem(Form f, String s) {
    TextArea t = new TextArea(s);
    t.setGrowByContent(true);
    f.addComponent(t);
}