отключение прокрутки фонового изображения в главном диспетчере полей в blackberry - PullRequest
0 голосов
/ 17 ноября 2011

В моем приложении есть один MainScreen. Этот экран содержит множество Vertical и Horizontal диспетчера полей, и все содержимое успешно отображается с помощью прокрутки.

Это мой основной VerticalFieldmanager код.

vfm_Main = new VerticalFieldManager()
    {
            public void paint(Graphics g)
            {
                g.setColor(Color.WHITE);
                g.drawBitmap(0,0,mybackgroundImage.getWidth(),mybackgroundImage.getHeight(),mybackgroundImage,0,0);
                                    super.paint(g);
            }
            protected void sublayout(int maxWidth, int maxHeight) 
            {
                super.sublayout(Display.getWidth(),Display.getHeight());
                setExtent(Display.getWidth(),Display.getHeight());
            }
    };

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

Я хочупрокручивать только содержимое этого экрана. Так как реализовать это? ..

Я много пробовал, но не получил никакого предложения и ударов, чтобы предотвратить это?если кто-то сталкивается с этой проблемой или есть идеи, пожалуйста, помогите мне ...

Заранее спасибо !!!

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Вы должны сделать так:

vfm_Main = new VerticalFieldManager()
{
            public void paint(Graphics g)
            {
                g.setColor(Color.WHITE);
                g.drawBitmap(0,0,mybackgroundImage.getWidth(),mybackgroundImage.getHeight(),mybackgroundImage,0,0);
                super.paint(g);
            }
            protected void sublayout(int maxWidth, int maxHeight) 
            {
                    super.sublayout(Display.getWidth(),Display.getHeight());
                    setExtent(Display.getWidth(),Display.getHeight());
            }
};

subver=new VerticalFieldManager(VERTICAL_SCROLL|VERTICAL_SCROLLBAR)
{
        protected void sublayout(int maxWidth, int maxHeight) 
        {
                 super.sublayout(Display.getWidth(),Display.getHeight()-3);//here we scroll the inner vertical
                 setExtent(Display.getWidth(),Display.getHeight()-3);
        }
 }
 //Write all the code here;
 subver.setpadding(1,0,0,0);
 vfm_main.add(subver);
 add(vfm_Main);

Мне нравится эта картинка:

Vertical Scrolling

Достаточно;

0 голосов
/ 18 ноября 2011

Я тоже однажды столкнулся с той же проблемой. Я исправил это, используя 2 полевых менеджера, как это.

VerticalFieldManager mainManager = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | Manager.NO_VERTICAL_SCROLLBAR )
    {

        public void paint(Graphics graphics)
        {
            graphics.clear();
            graphics.drawBitmap(0, 0, Display.getWidth(), Display.getHeight(), backgroundBitmap, 0, 0);                       
            super.paint(graphics);
        }            
    };
  //this manager is used for adding the componentes
    VerticalFieldManager subManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR )
    {
        protected void sublayout( int maxWidth, int maxHeight )
        {
            int displayWidth = Display.getWidth();
            int displayHeight = Display.getHeight();

            super.sublayout( displayWidth, displayHeight);
            setExtent( displayWidth, displayHeight);
        }
    };
...