Переопределить подпрошивку на экране или VerticalFieldManager

#blackberry #java-me

#ежевика #java-me

Вопрос:

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

 protected void sublayout( int maxWidth, int maxHeight ) {
    super.sublayout( maxWidth, maxHeight );
    setExtent(maxWidth,Constants.BACKGROUND_IMAGE.getHeight());  
}
  

Это не работает — в нижней части экрана появляется пробел, когда пользователь прокручивает страницу вниз. Я думал, что переопределение подпрошивки, используя тот же код, в объекте screen будет иметь приоритет над VerticalFieldManager, который является дочерним элементом screen.

Ответ №1:

Пара вещей, которые нужно проверить. Если вы вызываете на главном экране super(VERTICAL_SCROLL | USE_ALL_WIDTH) , то на самом деле прокруткой вниз будет менеджер вашего экрана, а не VFM, который вы настроили. Вы можете попробовать переопределить метод paint () вашего VFM и сделать что-то подобное:

 protected void paint(Graphics graphics) {
    graphics.drawBitmap(0, getVerticalScroll(), bg.getWidth(), bg.getHeight(), bg, 0, 0);
    super.paint(graphics);
}
  

Что должно заставить ваш фон «двигаться» вместе со прокруткой.

Комментарии:

1. Не следует ли сначала вызвать Super? В этом случае это переопределило бы drawBitmap?

2. Это фон, поэтому вы хотите сначала нарисовать его, а затем позволить всему остальному отрисовываться сверху (вызывая super() после).