Кнопка «Назад» для Nokia S40 LWUIT

Я создаю приложение для Nokia S40. Я установил это приложение в полноэкранный режим, и я заметил, что когда я устанавливаю этот полноэкранный режим, я потерял родные кнопки «Назад».

Мне нужно создать кнопку «Назад», как нативную кнопку «Назад» (всегда на экране, в нижней правой части экрана). Я пробовал это с рамкой и помещал ее на юг, но текст из центрального контейнера не появляется поверх этого... и имеет прозрачный фон.

Если у кого-то есть пример кода, будет здорово.


person Mun0n    schedule 20.08.2013    source источник


Ответы (1)


этот код просто разместил кнопку в нижней правой части экрана. это хорошо работает.

public void startApp() {
    Display.init(this);
    Form f = new Form();
    //Create a ComponentGroup for all components except backbutton
    final ComponentGroup cg = new ComponentGroup();
    final Button backButton = new Button("BackButton");
    // add this part to your code
    f.addOrientationListener(new ActionListener() {

        public void actionPerformed(ActionEvent evt) {
            Dimension d = new Dimension(Display.getInstance().getDisplayWidth(),  Display.getInstance().getDisplayHeight());
            cg.setPreferredSize(d);
            backButton.setX(Display.getInstance().getDisplayWidth() - backButton.getPreferredW());
        }
    });
    //set CoordinateLayout to f
    f.setLayout(new CoordinateLayout(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayHeight()));


    //Dimension d = new Dimension(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayHeight());
    cg.setPreferredH(Display.getInstance().getDisplayHeight());
    cg.setPreferredW(Display.getInstance().getDisplayWidth());
    cg.setLayout(new BorderLayout());
    cg.addComponent(BorderLayout.NORTH, new Button("NORTH"));
    cg.addComponent(BorderLayout.EAST, new Button("ESET"));
    cg.addComponent(BorderLayout.WEST, new Button("WEST"));
    cg.addComponent(BorderLayout.CENTER, new TextArea("sdsdsd"));

    cg.setX(0);
    cg.setY(0);
    backButton.getStyle().setBgColor(0x2233ff);

    backButton.setX(Display.getInstance().getDisplayWidth() - backButton.getPreferredW());
    backButton.setY(Display.getInstance().getDisplayHeight() - backButton.getPreferredH() - f.getTitleArea().getLayoutHeight());
    f.addComponent(cg);
    f.addComponent(backButton);
    f.show();   
}

вы можете сделать это с любой формой. если вы хотите, чтобы кнопка возврата отображалась во всех формах, вы можете написать для этого ООП-программирование. это работает хорошо.

person Zabihullah Alipour    schedule 20.08.2013
comment
Работает идеально для одной ориентации. Если вы измените ориентацию, проблема усложнится, потому что необходимо сообщить макету об изменении размера дисплея. - person Mun0n; 21.08.2013
comment
установите OrientationListener в вашу форму следующим образом: )); cg.setPreferredSize(d);backButton.setX(Display.getInstance().getDisplayWidth() - backButton.getPreferredW()); } }); - person Zabihullah Alipour; 22.08.2013
comment
когда я показываю PopUpList, кнопка «Назад» исчезает. Я попытался установить его снова с помощью метода listDismissed, но ничего не происходит. Любая идея? - person Mun0n; 23.08.2013
comment
у меня работает!!. могу я увидеть ваш исходный код? поместите сюда свой исходный код (метод PopUpList, listDismissed)? - person Zabihullah Alipour; 23.08.2013
comment
Хорошо, я сделаю новый вопрос с прикрепленным кодом. Большое спасибо @AliPour - person Mun0n; 25.08.2013
comment
Я создал фиктивный проект, чтобы попробовать эту проблему, но он работает нормально. Это должно быть проблема из моего другого проекта :-( Спасибо - person Mun0n; 26.08.2013