Как установить фоновое изображение для диалога?

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

public class DialogMenuHawaii extends Dialog {

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

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

3 ответа

Решение

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

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

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

КАК: Я бы порекомендовал вам просмотреть посты Shai в блоге LWUIT Resource Editor Tutorial Part 1 до Part 10. Чтобы лучше понять Resouce Editor, его функции и возможности.

:

:

:

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

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();
    }
}

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

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

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

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

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

dialog.getStyle().setBgImage(Image.createImage("/image/image.png");
Другие вопросы по тегам