2013-06-02 95 views
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) 
    { 

    } 
} 

回答

1

首先,水平滾動來回閱讀內容 非常糟糕UX。這個答案只能解決垂直滾動問題。

您的代碼存在的問題是您要在另一個可滾動的 (Form)中添加一個可滾動(List) 。這導致意想不到的結果,因爲不清楚哪個組件應該處理滾動。這可以通過 使用表格中的BorderLayout並將列表放置在中心來修復。

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

... 

這將使垂直滾動,但水平滾動不會 工作。

作出澄清滾動​​:

LWUIT的做法 以滾動基於聚焦,這意味着集裝箱滾動 因爲聚焦元素是出了屏幕。這具有 的後果LWUIT不支持大於屏幕的滾動元素,因此 您的列表將不能水平滾動。 (來源:LWUIT mini FAQ

建議:

最大元件高度取爲在列表中元件高度。此 使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); 
}