Come impostare un'immagine di sfondo per Dialog?
-
25-10-2019 - |
Domanda
sto cercando di fare questo:
public class DialogMenuHawaii extends Dialog {
Style s = UiFactory.getBaseStyle();
s.setBgTransparency(0);
s.setBgImage( <my image >);
this.setUnselectedStyle(s);
}
, ma non funziona.
Soluzione
Aprire il file' res in risorse Editor e selezionare il tema preferito,
- scheda Sotto 'Unselected' aprire la DialogContentPane stile, se non si dispone di uno creare apparire alla fine di questa risposta su come fare IT ?, e impostare l'immagine di sfondo per la immagine è necessario mostrare come Dialog bg
- scheda Sotto 'Unselected' aprire la DialogBody stile, se non si dispone di uno creare apparire alla fine di questa risposta su come fare IT ?, e impostare la trasparenza di sfondo come ' 0 ' e anche assicurarsi che il tipo di immagine di sfondo è NONE
Nota ??strong>: il codice sopra rifletterà per tutte le finestre di dialogo nell'applicazione. Se si desidera una particolare finestra immagine di sfondo di nuovi stili derivano da questi stili predefiniti con, e seguire i passaggi precedenti per applicare al vostro DialogMenuHawaii o qualsiasi runtime Finestre di dialogo .
COME: ti consiglierei di passare attraverso i post del blog del Shai LWUIT Resource Editor Tutorial parte 1 fino parte 10. Per comprendere meglio il resouce Editor sue caratteristiche e funzionalità.
PS: Programmatico-alleato non sono stato in grado di raggiungere utilizzando TextArea , che è il caso per difetto di dialogo di. Se si sostituisce la componente del corpo finestra di dialogo con Label se funziona bene, il codice di esempio è riportata qui sotto. Non ho approfondito molto in perché è così? forse lo farà nel tempo libero. Quindi ho proposto una soluzione alternativa di lavoro che viene script sopra utilizzando Editor risorse e di seguito utilizzando il codice
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();
}
}
Altri suggerimenti
In primo luogo, vi suggerisco di utilizzare un tema . Cambiamo costantemente piccoli dettagli di implementazione per esempio personalizzazioni come quello che si sta facendo non sarà portabile tra LWUIT 1.4 e 1.5. Non v'è alcun motivo per non usare un tema per una cosa del genere.
Se siete interessati al dolore e la sofferenza di logica vista la codifica manualmente nella vostra applicazione è possibile utilizzare diversi metodi come getDialogComponent()
per ottenere lo stile da loro e manipolare questo. Dialogo è una bestia complessa a causa del fatto che la sua realtà una forma imbottito lontano dai bordi.
Questo è per Dialog sfondo.
Dialog dialog = new Dialog();
dialog.getDialogStyle().setBgImage(Image.createImage("/image/image.png"));
Se si vuole la trasparenza set di dialogo con l'immagine.
dialog.getStyle().setBgImage(Image.createImage("/image/image.png");