Blackberry - Definir cor de fundo LabelField
-
12-09-2019 - |
Pergunta
Eu quero colocar várias LabelFields com texto alinhado à direita em um MainScreen com um fundo azul alice. Infelizmente eu não consigo descobrir como fazer isso acontecer.
O melhor que posso fazer é definir a minha backround para Color.ALICEBLUE em um MainScreen e colocar LabelFields na tela (também com um fundo azul 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);
}
};
Substituir a rotina pintura MainScreen me dá o meu fundo azul alice, mas substituindo rotinas pintura dos LabelFields não parece ser adequada. O resultado é uma linha branca, com um fundo azul alice atrás apenas do texto do rótulo. Adicionando USE_ALL_WIDTH
corrige o problema de fundo, mas não posso alinhar à direita com USE_ALL_WIDTH
.
Alguém sabe uma solução para isso?
Solução
Em versões <= 4.5 você pode criar VerticalFieldManager com tinta 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);
}
}
Em seguida, usá-lo na tela você está adicionando LabelField simples a ele:
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));
}
}
Em versões> = 4,6 você pode usar o método para o gerenciador de tela padrão setBackgroud ():
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));
}
}
Veja BB KB DB-00131 - Como - Alterar a cor de uma tela de fundo
Outras dicas
Use
new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);
sem substituindo o método paint do LabelField.