Blackberry - Настройка цвета фона LabelField
-
12-09-2019 - |
Вопрос
Я хочу разместить несколько полей меток с выровненным по правому краю текстом на главном экране с синим фоном alice.К сожалению, я, кажется, не могу понять, как это сделать.
Лучшее, что я могу сделать, это настроить фон на цветной.Выведите ALICEBLUE на главный экран и разместите на нем поля меток (также с синим фоном alice).
public void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.ALICEBLUE);
graphics.clear();
super.paint(graphics);
}
и...
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);
}
};
Переопределение процедуры рисования на главном экране дает мне мой синий фон alice, но переопределение процедур рисования LabelFields, похоже, недостаточно.В результате получается белая строка с синим фоном alice только за текстом надписи.Добавление USE_ALL_WIDTH
исправляет фоновую проблему, но я не могу выровнять по правому краю с USE_ALL_WIDTH
.
Кто-нибудь знает обходной путь для этого?
Решение
В версиях <= 4.5 вы можете создать VerticalFieldManager с переопределенным paint():
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);
}
}
Затем используйте его на своем экране, добавив к нему простое поле метки:
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));
}
}
В версиях >= 4.6 вы можете использовать метод 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));
}
}
Другие советы
Использование
new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);
без переопределения метода paint для LabelField.