Blackberry - Настройка цвета фона LabelField - PullRequest
3 голосов
/ 11 августа 2009

Я хочу разместить несколько полей LabelFields с выровненным по правому краю текстом на главном экране с синим фоном. К сожалению, я не могу понять, как это сделать.

Лучшее, что я могу сделать, - это установить цвет фона на Color.ALICEBLUE на главном экране и разместить поля LabelFields на экране (также на синем фоне алисы).

    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);  
        }
    };

При переопределении процедуры рисования MainScreen у меня появляется синий фон для Алисы, но переопределение процедур рисования в LabelFields кажется неадекватным. В результате получается белая строка с алисовым синим фоном только за текстом метки. Добавление USE_ALL_WIDTH исправляет проблему с фоном, но я не могу правильно выровнять с USE_ALL_WIDTH.

Кто-нибудь знает обходной путь для этого?

Ответы [ 2 ]

6 голосов
/ 11 августа 2009

В версиях <= 4.5 вы можете создать VerticalFieldManager с переопределенной краской (): </p>

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);
    }
}

Затем используйте его на своем экране, добавив к нему простое LabelField:

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));
    }
}

См. BB KB DB-00131 - Как - изменить цвет фона экрана

3 голосов
/ 11 августа 2009

Используйте

new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);

без переопределения метода рисования в LabelField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...