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

まず第一に、コンテンツを読むために水平方向に前後にスクロールすることは、UX にとって非常に悪いものです。この回答は、垂直スクロールの問題のみを解決します。

コードの問題は、別のスクロール可能な (フォーム) 内にスクロール可能な (リスト) を追加していることです。どのコンポーネントがスクロールを処理する必要があるかが明確でないため、これは予期しない結果につながります。これは、フォームで BorderLayout を使用し、リストを中央に配置することで修正できます。

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

...

これにより、垂直スクロールが有効になりますが、水平スクロールは機能しません。

スクロールに関する説明:

スクロールに対する LWUIT のアプローチはフォーカスに基づいています。つまり、フォーカスされた要素が画面の外にあるため、コンテナがスクロールします。これにより、LWUIT は画面よりも大きな要素のスクロールをサポートしないため、リストを水平方向にスクロールできなくなります。(出典: LWUIT mini FAQ )

提案:

最大要素の高さは、List 内のコンポーネントの高さと見なされます。これにより、List コンポーネントは、フォルダの詳細リストの連絡先リストなど、特定の方法で「事前にフォーマットされた」データを表示するのに適しています。可変長のテキストを積み重ねたい場合は
、BoxLayoutY で Form を使用し、テキストをさまざまな TextArea に配置する必要があります。

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 に答える