Как получить высоту титульного экрана на экране Blackberry?

Почему getHeight после setTitle равен нулю? Как получить фактическое значение высоты?

public class ActivityScreen extends MainScreen {
    /**
     * Creates new instance Activity screen
     */
    public ActivityScreen() {
      super();
          TitleFieldManager titleField = new TitleFieldManager(Display.getWidth());
          super.setTitle(titleField);
          if (titleField.getHeight() == 0) {
             // Why titleField.getHeight() == 0 ?
          }
    }
}

person Nikolay Moskvin    schedule 20.03.2011    source источник


Ответы (2)


Потому что вы вызываете titleField.getHeight() в конструкторе экрана. На данный момент инфраструктура пользовательского интерфейса еще не прошла процесс компоновки/измерения экрана. Если, например, вы вызовете тот же titleField.getHeight() после того, как хотя бы один вызов paint(Graphics graphics) экрана был выполнен, вы сможете получить ненулевое значение. Все макеты/измерения гарантированно выполняются ДО того, как можно будет отрисовать содержимое экрана.

Проверьте API Manager.sublayout(int width, int height). MainScreen также является Manager. Таким образом, в какой-то момент ПОСЛЕ того, как экран был построен, но ДО того, как он был нарисован, инфраструктура пользовательского интерфейса вызывает его sublayout(int width, int height), где происходит вся компоновка/измерение (все дочерние поля получают свои размеры).

person Vit Khudenko    schedule 20.03.2011

Я не уверен в этом на 100%, но я думаю, что высота элемента вычисляется, когда выкладывается менеджер, который его содержит.

Попробуйте нажать на экран, содержащий этот заголовок, а затем вызвать titleField.getHeight()

person Mugur    schedule 20.03.2011