Как получить высоту титульного экрана на экране BlackBerry? - PullRequest
1 голос
/ 20 марта 2011

Почему 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 ?
          }
    }
}

Ответы [ 2 ]

4 голосов
/ 20 марта 2011

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

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

0 голосов
/ 20 марта 2011

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

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

...