这是使用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高度的任何线索?
答案 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
设置width
和RichTextField
时遇到的问题,当你不想为它编写单独的类时。