我一直在尝试修改富文本字段,以便在其水平字段的一半中正确显示。 目标是:
---------------------------
| address is | ***********|
| very long | ** IMAGE **|
| state, zip | ***********|
---------------------------
其中地址是与city和zip分开的单个字符串。 我正在修改地址字段:
RichTextField addrField = new RichTextField(address) {
public int getPreferredWidth() {
return 200;
}
protected void layout(int maxWidth,int maxHeight) {
super.layout(getPreferredWidth(),maxHeight);
setExtent(getPreferredWidth(), getHeight());
}
};
结果如下:
-----------------------------
| address is ve| ***********|
| state, zip | ** IMAGE **|
| | ***********|
-----------------------------
显然地址正好在图像下面。两个水平场都是200像素宽的静态。这不像系统不知道在哪里包装地址。 但是,我听说要做到这一点并不容易,也不会自动完成。
我没有成功在线找到直接答案。我发现有人说你需要在自定义布局管理器中执行它,有些引用RichTextField API,这是没用的。但实际上并没有人提到如何去做。
据我所知,我可能需要逐个字符地阅读并设置换行的位置。我不知道的是如何做到这一点。你不能只计算字符并假设每个字符值5像素,你不应该这样做。 当然,必须有某种方式以一种有意义的方式实现这一目标。
有什么建议吗?
答案 0 :(得分:0)
我没有针对您的问题的确切解决方案,但在测量文字宽度方面,如果您对字段中使用的字体引用了Font对象,则可以调用Font.getAdvance()以像素为单位获取指定文本的宽度。如果您必须在文本中插入手动中断,这可能会有所帮助。