0

我有一个包含列表的 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)
  {

  }
}
4

1 回答 1

1

首先,水平滚动来回阅读内容是非常糟糕的用户体验。这个答案只会解决垂直滚动问题。

您的代码的问题是您在另一个可滚动(表单)中添加了一个可滚动(列表)。这会导致意想不到的结果,因为不清楚哪个组件应该处理滚动。这可以通过在表单中​​使用 BorderLayout 并将列表放置在中心来解决。

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

...

这将启用垂直滚动,但水平滚动将不起作用。

关于滚动的说明:

LWUIT 的滚动方法是基于 Focus 的,这意味着一个 Container 滚动是因为焦点元素不在屏幕上。这导致 LWUIT 不支持大于屏幕的滚动元素,因此您的 List 将无法水平滚动。(来源:LWUIT 迷你常见问题解答

建议:

最大元素高度被视为列表中的组件高度。这使得 List 组件足以显示以特定方式“预格式化”的数据,例如文件夹详细信息列表的联系人列表。如果你想堆叠可变长度的文本,你应该
使用带有 BoxLayoutY 的 Form 并将你的文本放在不同的 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);
}
于 2013-06-13T11:24:56.330 回答