2

LWUIT スクロールに問題があります。テキストエリアと20個のラベルを含むフォームがあります。下までスクロールすると、上にジャンプします(サイクルのように)。私の悪い英語でごめんなさい:(

これは私のコードです

public class ScrollMidlet extends MIDlet {

public void startApp() {
    Display.init(this);
    Form mainForm = new Form("Scroll issue");
    mainForm.setLayout(new BoxLayout(BoxLayout.Y_AXIS));

    TextArea textArea = new TextArea("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum");
    mainForm.addComponent(textArea);

    for (int i = 0; i < 20; i++) {
        mainForm.addComponent(new Label("This is label " + (i + 1)));
    }
    mainForm.setScrollable(true);
    mainForm.show();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

}

4

1 に答える 1

1

setCyclicFocusメソッドを使用してサイクリック フォーカスを無効にする必要があります。

mainForm.setCyclicFocus(false);

編集: LWUIT スクロールは、現在のコンポーネントのフォーカスに基づいて機能します。したがって、下矢印を押すと、フォーカスが下の要素に変わり、必要に応じてフォームがスクロールします。デフォルトでは、ラベルはフォーカス可能ではないため、ラベルはフォーカスされず、スクロールが正しく機能しません。これを修正するには、ラベルの作成を変更する必要があります。

Label l = new Label("This is label " + (i + 1));
l.setFocusable(true);
mainForm.addComponent(l);

また、コンテンツを読むために水平方向にスクロールするのは非常にユーザー エクスペリエンスが悪いため、水平方向のスクロールを禁止する必要があります。

mainForm.setScrollableX(false);
mainForm.setScrollableY(true);

これで setCyclicFocus は問題なく動作するはずです。

于 2013-06-17T14:38:24.370 に答える