Как установить фон поля в Blackberry 4.5?

Я определил BitmapButtonField в Blackberry. Но по умолчанию серый цвет фона не идет. И голубоватая граница на фокусе? Как поменять их в ББ 4.5

2 ответа

Решение

Привет, это растровая кнопка и цвет фона Красный

manager=new Field(Field.FOCUSABLE){
                protected void onFocus(int direction) {
                    super.onFocus(direction);
                    flag1=true;
                    invalidate();
                }
                protected void onUnfocus() {
                    flag1=false;
                    invalidate();

                }
                protected void layout(int width, int height) {
                    setExtent(image.getWidth(),image.getHeight());
                }
                protected void paint(Graphics graphics) {
                    if(flag1){
                        graphics.setBackgroundColor(Color.RED);
                        graphics.clear();
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
                    }else{
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
                    }
                }
                protected boolean navigationClick(int status, int time) {
                    fieldChangeNotify(1);
                    return true;
                }
            };
            manager.setChangeListener(this);
            add(manager);

вывод как следующее изображение введите описание изображения здесьЭто фоновое изображение и цвет фона по умолчанию

manager1=new Field(Field.FOCUSABLE){
                protected void onFocus(int direction) {
                    super.onFocus(direction);
                    flag2=true;
                    invalidate();
                }
                protected void onUnfocus() {
                    button=image;
                    flag2=false;
                    invalidate();

                }
                protected void layout(int width, int height) {
                    setExtent(image.getWidth(),image.getHeight());
                }
                protected void paint(Graphics graphics) {
                    if(flag2)
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
                        else
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
                }
                protected boolean navigationClick(int status, int time) {
                    fieldChangeNotify(1);
                    return true;
                }
            };
            manager1.setChangeListener(this);
            add(manager1);

изложить как следуетвведите описание изображения здесь

Полностью функциональный класс для лучшего понимания

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;

public class StartUp extends UiApplication{
    public static void main(String[] args) {
        StartUp up=new StartUp();
        up.enterEventDispatcher();
    }
    public StartUp()
    {
        pushScreen(new Demoscreen());
    }
    class Demoscreen extends MainScreen implements FieldChangeListener
    {
        Bitmap image,image_hover;
        boolean flag1,flag2;
        Field manager=null,manager1=null;
        public Demoscreen() {
            image=Bitmap.getBitmapResource("Download_48x48.png");
            image_hover=Bitmap.getBitmapResource("Download_48x48.png");
            manager=new Field(Field.FOCUSABLE){
                protected void onFocus(int direction) {
                    super.onFocus(direction);
                    flag1=true;
                    invalidate();
                }
                protected void onUnfocus() {
                    flag1=false;
                    invalidate();

                }
                protected void layout(int width, int height) {
                    setExtent(image.getWidth(),image.getHeight());
                }
                protected void paint(Graphics graphics) {
                    if(flag1){
                        graphics.setBackgroundColor(Color.RED);
                        graphics.clear();
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
                    }else{
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
                    }
                }
                protected boolean navigationClick(int status, int time) {
                    fieldChangeNotify(1);
                    return true;
                }
            };
            manager.setChangeListener(this);
            add(manager);
            manager1=new Field(Field.FOCUSABLE){
                protected void onFocus(int direction) {
                    super.onFocus(direction);
                    flag2=true;
                    invalidate();
                }
                protected void onUnfocus() {
                    flag2=false;
                    invalidate();
                }
                protected void layout(int width, int height) {
                    setExtent(image.getWidth(),image.getHeight());
                }
                protected void paint(Graphics graphics) {
                    if(flag2)
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
                        else
                        graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
                }
                protected boolean navigationClick(int status, int time) {
                    fieldChangeNotify(1);
                    return true;
                }
            };
            manager1.setChangeListener(this);
            add(manager1);
        }
        public void fieldChanged(Field field, int context) {
            if(field==manager)
            {
                displayDialog("I am first field");
            }else if(field==manager1)
            {
                displayDialog("I am second  field");
            }

        }
        public void displayDialog(final String message)
        {
            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                    Dialog.inform(message);
                }
            });
        }
    }
}

Для получения более подробной информации, пожалуйста, перейдите по следующей ссылке для Фоновая логика фона для 4.5 ОС

Проверьте следующие ссылки для настраиваемого поля кнопки:

Реализуйте расширенные кнопки, поля и менеджеры.

Пользовательские кнопки - Создание пользовательской кнопки из изображения

Поле пользовательских кнопок Blackberry

Как создать поле пользовательских кнопок в Blackberry

Обычно перекрывающий applyTheme(..) (пустая реализация) удаляет стилизацию поля по умолчанию. Также нам нужно переопределить paint(..), paintBackground(..), drawFocus(..) и изменить их реализацию в соответствии с текущим статусом поля. Ниже приведен фрагмент кода для случая, когда я расширяю поле для создания поля пользовательских кнопок.

private final Bitmap focusedBitMap = Bitmap.getBitmapResource("focused.png");
private final Bitmap unfocusedBitmap = Bitmap.getBitmapResource("unfocused.png");

protected void paint(Graphics graphics) {
    // paint background
    graphics.setBackgroundColor(isFocus() ? Color.RED : Color.GREEN);
    graphics.clear();

    // draw button image
    Bitmap myBitmap = isFocus() ? focusedBitMap : unfocusedBitmap;
    if (myBitmap != null) {
        // image position calculation
        int imageX = 0;
        int imageY = 0;
        graphics.drawBitmap(imageX, imageY, 
            myBitmap.getWidth(), myBitmap.getHeight(), 
            myBitmap, 0, 0);
    }
}

protected void drawFocus(Graphics graphics, boolean on) {
}

public boolean isFocusable() {
    return true;
}
Другие вопросы по тегам