Проблема с прокруткой с полем растрового изображения, Blackberry - PullRequest
1 голос
/ 04 марта 2010

работает на ББ 9000

эй, на моем экране есть поле метки, под ним - поле растрового изображения, а под ним - поле списка

когда я прокручиваю вниз, все перерисовки в порядке, но когда я прокручиваю вверх из поля списка в поле битовой карты

тогда мое изображение не будет перекрашено, пока я не достигну самого верхнего поля метки.

Я не могу понять, почему это происходит

поле метки по некоторым причинам установлено в focussable ...

превращение растрового поля в фокусируемое также не решает проблему

код:

LabelField lbl = new LabelField("Hello",Field.focussable)

detail_img = Bitmap.getBitmapResource("container.png");
detail_img_field = new BitmapField(detail_img);

 reviewlist =  new Review_List(my_vector); //Review_List is  a class that fills value in list field

 reviewlistManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL |Manager.VERTICAL_SCROLLBAR)
 {              

                 protected void paint(net.rim.device.api.ui.Graphics graphics)
                    {
                         super.paint( graphics );
                    }

                      protected boolean keyDown( int keycode, int status )
                        {
                           my_Screen.this.invalidate();
                            return super.keyDown( keycode, status );
                        }
                        protected boolean keyUp(int keycode, int time)
                        {
                            my_Screen.this.invalidate();
                            return super.keyUp(keycode, time);
                        }

                        protected boolean navigationMovement( int dx, int dy, int status, int time )
                        {
                            my_Screen.this.invalidate();
                            return super.navigationMovement( dx, dy, status, time );
                        }

                        protected int moveFocus(int amount, int status, int time)
                        {
                            my_Screen.this.invalidate();
                           return super.moveFocus(amount, status, time);
                        }
                        protected void onFocus(int direction)
                        {
                            my_Screen.this.invalidate();
                            super.onFocus(direction);
                        }
                        protected void onUnfocus() 
                        {
                            my_Screen.this.invalidate();
                            super.onUnfocus();
                        }

                };

reviewlistManager.add(reviewlist);
backgroundMannager.add(reviewlistManager);
add(backgroundMannager);

Ответы [ 2 ]

1 голос
/ 06 марта 2010

yuppieeeeee

я получил ответ

Я только что поместил растровое поле в VerticalFieldManager, включил вертикальную прокрутку, и моя проблема была решена ...

код:

    rest_manager = new VerticalFieldManager(Manager.VERTICAL_SCROLL)
          {
            protected void paint(net.rim.device.api.ui.Graphics graphics)
             {
                  int y = this.getVerticalScroll();                                     
                                     graphics.drawBitmap( 0, y, rank_img.getWidth()+10, 
rank_img.getHeight(), rank_img, 0, 0 );

                                     super.paint( graphics );
                                }
                     }
1 голос
/ 04 марта 2010

Это на симуляторе или реальном устройстве? Иногда на симуляторах возникают проблемы с рендерингом (например, не происходит перерисовка области, в которой они должны находиться), а на реальном устройстве - нет.

...