Blackberry RichTextField在布局期间的首选高度

时间:2010-03-28 20:31:48

标签: blackberry

这是使用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 个答案:

答案 0 :(得分:2)

当然,我一发布就知道了答案。调用layoutChild后查询控件。

这解决了它:

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

    h = rtf.getHeight();

    setPositionChild(rtf, 0, 0);

    setExtent(Display.getWidth(), h);

我会删除这个问题,但也许这会帮助其他人。

答案 1 :(得分:0)

RichTextField deviceId = new RichTextField() {
    protected void setExtent(int width, int height) {
        super.setExtent(Display.getWidth() - 30, 25);
    }
};

这解决了我在为height设置widthRichTextField时遇到的问题,当你不想为它编写单独的类时。