#java #blackberry #java-me
#java #ежевика #java-me
Вопрос:
Я пытаюсь установить высоту баннера так, чтобы все изображение отображалось в верхней части экрана.
Вот мой код для установки высоты баннера —
protected void sublayout( int width, int height ) {
Bitmap b = Constants.HEADER_LOGO;
super.setExtent( b.getWidth(), b.getHeight() );
}
Высота баннера отрегулирована правильно, но я не могу добавить поля к баннеру с помощью метода add. Исключения не генерируются.
Является ли это правильным методом увеличения высоты поля баннера?
Спасибо
Ответ №1:
Это может зависеть от нескольких факторов. Если ваше растровое изображение не соответствует ширине вашего экрана, то вы, вероятно, предоставляете недостаточно ширины для размещения ваших полей. Что я, вероятно, сделал бы, так это изменил ваш вызов super.setExtent () на
super.setExtent(width, Math.min(b.getHeight(), height));
При этом я предполагаю, что то, что вы пытаетесь установить в качестве баннера, является HorizontalFieldManager. Вы заметите, что туда также добавлен вызов Math.min(). Причина, по которой вы хотите это сделать, заключается в том, что ваши ширина и высота являются максимально допустимыми размерами, которые может занимать менеджер, и если вы попытаетесь вызвать setExtent () с размерами, превышающими его, вы, скорее всего, получите сообщение об ошибке в вашей консоли, в котором говорится, что для размещения недостаточно места.
Итак, теперь, когда у вас есть правильный размер вашего менеджера, вы можете добавить свои поля в этот HFM, затем установить Banner (hfm), и вы должны быть в восторге!
Комментарии:
1. Спасибо за ваш ответ, но, по крайней мере, у меня это не работает, когда я не использую setextent, поле добавляется правильно. В настоящее время я переопределяю метод paint, чтобы нарисовать фоновое изображение баннера. Я думаю, я просто продолжу переопределять метод paint для добавления текста.
2. На самом деле, я думаю, что знаю, в чем проблема. Попробуйте первым делом изменить свой подпроцессор на вызов super.sublayout(width, height), а затем вместо super.setExtent() должно быть достаточно простого вызова setExtent().