Blackberry RichTextField предпочитаемая высота во время макета - PullRequest
0 голосов
/ 29 марта 2010

Используется Backberry JDK (5.0, если необходимо).

У меня есть собственный менеджер, который содержит RichTextField. Я хочу, чтобы высота поля менялась в зависимости от объема текста в RichTextField.

Код подслоя выглядит следующим образом (rtf является объектом RichTextField):

    protected void sublayout(int width, int height) {
    int h = rtf.getPreferredHeight();
    setExtent(Display.getWidth(), h);
    layoutChild(rtf, Display.getWidth(), h);
    setPositionChild(rtf, 0, 0);

    setExtent(Display.getWidth(), h);
}

Вызов rtf.getPreferredHeight всегда возвращает одно и то же значение, независимо от объема текста (и, следовательно, количества строк на экране).

Есть ли какие-либо подсказки о том, как получить высоту RichTextField, когда известно содержание и ширина?

Ответы [ 2 ]

2 голосов
/ 29 марта 2010

Конечно, как только я опубликовал это, я понял ответ. Запросите элемент управления после вызова layoutChild.

Это исправлено:

    int h = rtf.getPreferredHeight();
    layoutChild(rtf, Display.getWidth(), h);

    h = rtf.getHeight();

    setPositionChild(rtf, 0, 0);

    setExtent(Display.getWidth(), h);

Я бы удалил вопрос, но, возможно, это поможет кому-то еще.

0 голосов
/ 08 января 2013
RichTextField deviceId = new RichTextField() {
    protected void setExtent(int width, int height) {
        super.setExtent(Display.getWidth() - 30, 25);
    }
};

Это решило мою проблему установки height и width для RichTextField, когда вы не хотите писать отдельный класс для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...