Как установить фоновое изображение для диалога? - PullRequest
2 голосов
/ 29 ноября 2011

Я пытаюсь сделать это:

public class DialogMenuHawaii extends Dialog {

    Style s = UiFactory.getBaseStyle();
    s.setBgTransparency(0);
    s.setBgImage( <my image >);
    this.setUnselectedStyle(s);
}

но это не работает.

Ответы [ 3 ]

2 голосов
/ 01 декабря 2011

Во-первых, я предлагаю вам использовать тему . Мы постоянно меняем мелкие детали реализации, например настройки, подобные той, которую вы делаете, не будут переносимы между LWUIT 1.4 и 1.5. Нет никаких причин не использовать тему для чего-то подобного.

Если вас интересует боль и страдания, связанные с ручным кодированием логики представления в вашем приложении, вы можете использовать несколько методов, таких как getDialogComponent(), чтобы получить от них стиль и манипулировать им. Диалог - сложный зверь из-за того, что он действительно имеет форму, проложенную вдали от краев.

1 голос
/ 29 ноября 2011

Откройте файл «.res» в редакторе ресурсов и выберите предпочитаемую тему,

  1. На вкладке «Не выбран» откройте стиль DialogContentPane , если у вас нетСоздайте его, посмотрите в конце этого ответа на вопрос «КАК ЭТО СДЕЛАТЬ?» и установите фоновое изображение для изображения, которое нужно отображать в виде диалога bg
  2. На вкладке «Не выбран» откройте DialogBody *Стиль 1009 *, если у вас его нет, посмотрите в конце ответа на вопрос «КАК ЭТО СДЕЛАТЬ?» И установите прозрачность фона как « 0 », а также убедитесь, что тип фонового изображенияis NONE

ПРИМЕЧАНИЕ : приведенный выше код будет отображаться для всех диалоговых окон в вашем приложении.Если вам нужен конкретный диалог с фоновым изображением, который выводит новые стили из этих стилей по умолчанию, и выполните описанные выше шаги, чтобы применить его к вашим DialogMenuHawaii или к любым диалоговым окнам .

*.1024 * КАК: Я бы порекомендовал вам просмотреть сообщения в блоге Shai Учебное пособие по редактору ресурсов LWUIT Часть 1 до части 10. Чтобы лучше понять Редактор ресурсов, его функции и возможности.

:

:

:

PS: Программно, я не смог добиться этого с помощью TextArea , что соответствует стандартным диалогам.Если вы замените компонент тела диалога на Метка , если он работает нормально, пример кода приведен ниже.Я не очень углубился в то, почему это так?возможно сделаю это в свое свободное время.Поэтому я предложил рабочее альтернативное решение, которое написано выше с использованием редактора ресурсов, а ниже с использованием кода

class MyDialog extends Dialog {

    public void show() {
        Container octnPane = this.getDialogComponent();
        octnPane.getUnselectedStyle().setBgTransparency(0, false);

        Container ctnPane = (Container)((BorderLayout)octnPane.getLayout()).getCenter();
        ctnPane.getUnselectedStyle().setBackgroundType(Style.BACKGROUND_IMAGE_SCALED, false);
        ctnPane.getUnselectedStyle().setBgImage(myImage, false);

        Label t = new Label("Dialog");
        t.setUIID("DialogBody");
        t.getUnselectedStyle().setBgTransparency(0, false);
        ctnPane.addComponent(t);

        super.show();
    }
}
0 голосов
/ 08 мая 2012

Это для фона диалога.

Dialog dialog = new Dialog();
dialog.getDialogStyle().setBgImage(Image.createImage("/image/image.png"));

Если вы хотите установить прозрачность диалога с изображением.

dialog.getStyle().setBgImage(Image.createImage("/image/image.png");
...