Blackberry - Réglage de la couleur d'arrière-plan LabelField
-
12-09-2019 - |
Question
Je veux placer plusieurs LabelFields avec le texte aligné à droite sur un MainScreen avec un fond bleu alice. Malheureusement, je ne peux pas sembler comprendre comment y arriver.
Le mieux que je peux faire est de mettre mon backround à Color.ALICEBLUE sur un LabelFields de mainScreen et placer sur l'écran (également avec un fond bleu alice).
public void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.ALICEBLUE);
graphics.clear();
super.paint(graphics);
}
et ...
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);
}
};
Outrepasser la routine de peinture MainScreen me donne mon alice fond bleu, mais remplaçant les routines de peinture des LabelFields ne semble pas être suffisant. Le résultat est une ligne blanche, avec un fond bleu alice derrière le texte de l'étiquette seulement. Ajout USE_ALL_WIDTH
corrige le problème de fond, mais je ne peux pas aligner à droite USE_ALL_WIDTH
.
Quelqu'un sait-il un travail autour de cela?
La solution
Dans les versions <= 4.5, vous pouvez créer VerticalFieldManager avec de la peinture 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);
}
}
Utilisez ensuite sur l'écran que vous êtes en ajoutant LabelField simple il:
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));
}
}
Dans les versions> = 4.6, vous pouvez utiliser la méthode setBackgroud () pour le gestionnaire d'écran par défaut:
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));
}
}
Voir BB KB DB-00131 - Comment - Changer la couleur de fond d'un écran
Autres conseils
Utilisez
new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);
sans substituant la méthode de peinture de la LabelField.