我一直在尝试修改富文本字段以在水平字段的一半中正确显示。目标是这样的:
---------------------------
| address is | ***********|
| very long | ** IMAGE **|
| state, zip | ***********|
---------------------------
其中地址是与城市和 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 个像素,而且您不应该这样做。当然,必须有某种方法以一种有意义的方式实现这一目标。
有什么建议么?