【问题标题】:How do you word wrap a RichTextField for Blackberry你如何为黑莓换行 RichTextField
【发布时间】:2010-04-26 20:41:32
【问题描述】:

我一直在尝试修改富文本字段以使其在水平字段的一半中正确显示。 目标是这样的:

---------------------------
| address is | ***********|
| very long  | ** IMAGE **|
| state, 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 个像素,而且您不应该这样做。 当然,必须有某种方法以一种有意义的方式实现这一目标。

有什么建议吗?

【问题讨论】:

标签: blackberry richtextbox word word-wrap


【解决方案1】:

我对您的问题没有确切的解决方案,但在测量文本宽度方面,如果您对您所在领域中使用的字体的 Font 对象有参考,您可以致电Font.getAdvance() 获取指定文本的宽度(以像素为单位)。如果您必须在文本中插入手动换行符,这可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多