Как установить фоновое изображение для диалога?
Я пытаюсь сделать это:
public class DialogMenuHawaii extends Dialog {
Style s = UiFactory.getBaseStyle();
s.setBgTransparency(0);
s.setBgImage( <my image >);
this.setUnselectedStyle(s);
}
но это не работает
3 ответа
Откройте файл.res в редакторе ресурсов и выберите предпочитаемую тему,
- На вкладке "Не выбрано" откройте стиль DialogContentPane, если у вас его нет, посмотрите в конце ответа на вопрос "КАК СДЕЛАТЬ ЭТО?" И установите фоновое изображение на изображение, которое необходимо отобразить в диалоге bg
- На вкладке "Не выбрано" откройте стиль 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");