Nikunj Patel
Nikunj Patel

Reputation: 22066

VerticalFieldManager is not scrolling

I am developing one application in which I have set lots of text in LableField and I want it to make scrollable in simulator 8900. So for that I have taken VerticalFieldManager and put LableField into it. I made VerticalFieldManager scrollable with VERTICAL_SCROLL and also tried with Manager.VERTICAL_SCROLL. But still it is not working.

My code

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.FontFamily;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.HorizontalFieldManager;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.BackgroundFactory;

public class AboutM1 extends MainScreen {

    public AboutM1() {

        ((VerticalFieldManager) getMainManager())
                .setBackground(BackgroundFactory
                        .createSolidBackground(0xEDEDED));

        VerticalFieldManager TOPVFM = new VerticalFieldManager(USE_ALL_WIDTH);
        HorizontalFieldManager TOPHFM = new HorizontalFieldManager(
                FIELD_HCENTER | FIELD_VCENTER);
        // LabelField toplable = new LabelField("Welcome to");

        LabelField toplable = new LabelField("\n Welcome to", FIELD_BOTTOM) {
            public void paint(Graphics g) {
                g.setBackgroundColor(0xECECEC);
                g.fillRect(0, 0, getWidth(), getHeight());
                g.setColor(Color.RED);

                g.clear();
                super.paint(g);
            }
        };

        FontFamily fontFamily[] = FontFamily.getFontFamilies();
        Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 20);
        font = fontFamily[1].getFont(Font.BOLD, 25);
        toplable.setFont(font);

        Bitmap bmp = Bitmap.getBitmapResource("logo36X36.png");
        BitmapField imgField = new BitmapField(bmp, FIELD_BOTTOM);

        TOPHFM.add(toplable);
        TOPHFM.add(imgField);

        TOPVFM.add(TOPHFM);

        int width = Display.getWidth();

        add(TOPVFM);
        LabelField Greenline = new LabelField(
                "_______________________________________") {
            protected void paint(Graphics g) {
                int oldColor = g.getColor();
                g.setColor(Color.GREEN);
                // g.fillRoundRect(0, 0, 50, 5, 7, 7);
                g.setColor(oldColor);
                super.paint(g);
            }

        };

        add(Greenline);

        VerticalFieldManager DescriptionVFM = new VerticalFieldManager(
                VERTICAL_SCROLL);
        LabelField Description = new LabelField(
                "\n asdasdawqwere we r we r we rw er w er wer, groceries, sadfertewrt er te rt ert er t er t er t er t . asdasdasdasdas asd asd werwerewrt er t erter t ert.",
                FIELD_HCENTER);
        LabelField Description2 = new LabelField(
                "\n\n\n About Us \n For customer care \n\n");
        /*
         * add(Description); add(Description2);
         */

        DescriptionVFM.add(Description);
        DescriptionVFM.add(Description2);

        VerticalFieldManager BottomVFM = new VerticalFieldManager(USE_ALL_WIDTH);
        HorizontalFieldManager BottomHFM = new HorizontalFieldManager(
                FIELD_VCENTER);
        LabelField callus = new LabelField("Call: ", FIELD_VCENTER);
        LabelField Number = new LabelField("+91-79-30487400", FIELD_VCENTER) {
            protected void paint(Graphics g) {
                g.setColor(0x324F85);

                // g.fillRoundRect(0, 0, 50, 5, 7, 7);
                super.paint(g);
            }

        };
        font = fontFamily[1].getFont(Font.BOLD, 18);
        Number.setFont(font);

        BottomHFM.add(callus);
        BottomHFM.add(Number);
        BottomVFM.add(BottomHFM);
        // add(BottomVFM);
        DescriptionVFM.add(BottomVFM);
        add(DescriptionVFM);

    }
}

Upvotes: 0

Views: 310

Answers (1)

Rupak
Rupak

Reputation: 3674

When you add an instance of LabelField to any FieldManager, you need to add another dummy focusable Field after that.

You can use NullField in that case. Try something like following:

// fieldManger can be a VerticalFieldManger, HorizontalFieldManger, Manager, etc.
fieldManager.add(new LabelField("An instance of LabelField"));
fieldManager.add(new NullField(NullField.FOCUSABLE);

Upvotes: 3

Related Questions