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