Blackberry - Impostazione colore di sfondo labelField
-
12-09-2019 - |
Domanda
Voglio posizionare diversi LabelFields con testo allineato a destra su un MainScreen con uno sfondo blu alice. Purtroppo non riesco a capire come realizzare questo obiettivo.
Il meglio che posso fare è impostare il mio backround a Color.ALICEBLUE su un MainScreen e luogo LabelFields sullo schermo (anche con uno sfondo blu alice).
public void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.ALICEBLUE);
graphics.clear();
super.paint(graphics);
}
e ...
LabelField display = new LabelField("", LabelField.FIELD_RIGHT){
public void paint(Graphics graphics) {
graphics.setColor(Color.DIMGRAY);
graphics.setBackgroundColor(Color.ALICEBLUE);
graphics.clear();
super.paint(graphics);
}
};
mi Superamento della vernice di routine MainScreen dà il mio alice sfondo blu, ma ignorando le routine di dipingere il LabelFields' non sembra essere sufficiente. Il risultato è una riga bianca, con uno sfondo blu alice dietro solo il testo dell'etichetta. Aggiunta USE_ALL_WIDTH
corregge il problema di fondo, ma non posso proprio allinearsi con USE_ALL_WIDTH
.
Qualcuno sa un lavoro in giro per questo?
Soluzione
Nelle versioni <= 4.5 è possibile creare VerticalFieldManager con vernice overrided ():
class BGManager extends VerticalFieldManager {
public BGManager() {
super(USE_ALL_HEIGHT|USE_ALL_WIDTH);
}
public void paint(Graphics graphics)
{
graphics.setBackgroundColor(Color.DARKRED);
graphics.clear();
super.paint(graphics);
}
}
Quindi utilizzare su sei schermo aggiungendo semplice labelField ad esso:
class Scr extends MainScreen {
BGManager manager = new BGManager();
public Scr() {
super();
add(manager);
manager.add(new LabelField("Hello!", FIELD_RIGHT));
manager.add(new LabelField("This is a test", FIELD_RIGHT));
}
}
Nelle versioni> = 4.6 è possibile utilizzare setBackgroud () metodo per direttore schermata predefinita:
class Scr extends MainScreen {
public Scr() {
super();
VerticalFieldManager manager =
(VerticalFieldManager)getMainManager();
manager.setBackground(
BackgroundFactory.createSolidBackground(
Color.DARKRED));
manager.add(new LabelField("Hello!", FIELD_RIGHT));
manager.add(new LabelField("This is a test", FIELD_RIGHT));
}
}
Vedere BB KB DB-00131 - Come - Cambiare il colore di uno schermo di sfondo
Altri suggerimenti
Usa
new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);
senza l'override del metodo paint della labelField.