Pregunta

Quiero colocar varias LabelFields con el texto alineado a la derecha en un MainScreen con un fondo azul de Alicia. Por desgracia, me parece que no puede encontrar la manera de hacer que eso suceda.

Lo mejor que puedo hacer es configurar mi apaisada a Color.ALICEBLUE en un lugar MainScreen y LabelFields en la pantalla (también con un fondo azul de Alicia).

    public void paint(Graphics graphics) {
        graphics.setBackgroundColor(Color.ALICEBLUE);
        graphics.clear();
        super.paint(graphics);  
    }

y ...

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

Me Anulación de la rutina de pintura MainScreen da mi fondo azul Alice, pero anulando rutinas de pintura los LabelFields' no parece ser suficiente. El resultado es una hilera blanca, con un fondo azul Alice sólo por detrás del texto de la etiqueta. Añadiendo USE_ALL_WIDTH corrige el problema de fondo, pero no puede alinear a la derecha con USE_ALL_WIDTH.

¿Alguien sabe una solución alternativa para esto?

¿Fue útil?

Solución

En versiones <= 4.5 puede crear VerticalFieldManager con pintura 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);
    }
}

A continuación, utilizarlo en la pantalla estás añadiendo LabelField sencilla a ella:

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

En versiones> = 4.6 puede utilizar el método para el gestor de pantalla por defecto 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));
    }
}

Consulte BB-00131 KB DB - Cómo - Cambiar el color de fondo de una pantalla

Otros consejos

Uso

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

sin reemplazando el método de pintura de la LabelField.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top