2010-04-26 53 views
1

我一直在嘗試修改一個富文本字段以正確顯示其水平字段的一半。 我們的目標是:你如何爲黑莓包裝RichTextField

--------------------------- 
| 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像素,你不應該這樣做。 當然,必須有某種方式來達到這個目的。

有什麼建議嗎?

+0

另請參閱http://stackoverflow.com/questions/8995693/wrap-autocompletefield-list-item – 2012-05-25 16:15:29

回答

0

我沒有問題的確切解決方案,但是在測量文本寬度方面,如果您在字段中使用的字體對字體對象的引用,則可以撥打Font.getAdvance()以獲取指定文本的寬度(以像素爲單位)。如果您必須在文字中插入手動分頁,這可能會有所幫助。