Как сделать черный фон в Blackberry? - PullRequest
1 голос
/ 08 марта 2012

Я разрабатываю свое первое приложение BlackBerry и хочу изменить фон на Черный и весь текст (в метках BasicEditField, Label s и т. Д.) Белый.

Я пытался использовать setBackground(Background bg) метод на VerticalFieldManager, но он только затемнил экран, насколько мои компоненты идут. То есть, если у меня есть только две кнопки одна под другой, фон будет только черным до конца кнопок. Поэтому, когда на экране меньше компонентов, экран становится наполовину черным и наполовину белым.

Есть ли способ, которым я могу добиться желаемого поведения:

  • Весь экран должен быть Черный .
  • Все текстовые метки должны быть Белый .

Любая помощь с благодарностью!

Ответы [ 2 ]

4 голосов
/ 08 марта 2012

Этот код сделает ваш фон черным, а поле редактирования белым.

VerticalFieldManager backg = new VerticalFieldManager(Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT){
public void paint(Graphics graphics) {
graphics.setBackgroundColor(Color.BLACK);
graphics.clear();
super.paint(graphics);
    }
};

Теперь добавьте поле редактирования как

EditField edit= new EditField("", "", 100, Field.FOCUSABLE){
protected void paintBackground(Graphics g) {
           g.setBackgroundColor(Color.WHITE);
           g.clear();
       }



backg.add(edit);
add(backg);

, используйте g.setColor(Color.WHITE); для изменения цвета шрифта.

2 голосов
/ 08 марта 2012

Версия Signare работает для более старых версий, но есть и другой вариант, начиная с OS 4.6.Проверьте классы в пакете net.rim.device.api.ui.decor .

Я использую это для изменения фона экрана в одной из моих программ:

public class MyScreen extends MainScreen {

    MyScreen() {

        Background screenColor = BackgroundFactory.createSolidBackground(Color.Black);
        Manager backg= getMainManager();
        backg.setBackground(screenColor);

        EditField edit = new EditField("", "", 100, Field.FOCUSABLE){
            protected void paint(Graphics g) {
                g.setColor(Color.WHITE);
                super.paint(g);
            }
        };
        Background fieldColor = BackgroundFactory.createSolidBackground(Color.BLACK);
        edit.setBackground(fieldColor);

        backg.add(edit);
    }
}

Все ваши поля имеют методы .setBackround() и .setBorder(), которые позволяют вамсделать несколько хороших настроек.Я нахожу этот способ проще, чем создавать подклассы для всех моих компонентов, просто чтобы изменить цвет фона.К сожалению, вам все равно придется сделать это, чтобы изменить цвет текста EditField или LabelField.

...