0
在我的應用程序中,我必須實現從VerticalFieldManager擴展的自定義組件,並且此管理器保存的行是HorizontalFieldManager。 問題出在OS 4.5左邊的LabelField只顯示一行文字。這裏是代碼和圖像。 LabelField在OS 4.5和6.0之間的不同行爲
class Row extends HorizontalFieldManager{
private LabelField key;
private LabelField value;
public Row(String left,String right){
key = new LabelField(left + ": ",Field.NON_FOCUSABLE | Field.NON_SPELLCHECKABLE | TextField.NO_LEARNING | RichTextField.USE_TEXT_WIDTH){
public int getPreferredWidth() {
return Math.min((Display.getWidth()-20)/2,super.getPreferredWidth());
}
};
key.setPadding(0, 0, 0, 10);
key.setFont(Fonts.NORMAL);
add(key);
value = new LabelField(right,Field.NON_SPELLCHECKABLE | TextField.NO_LEARNING | Field.FOCUSABLE);
value.setPadding(0, 10, 0, 0);
value.setFont(Fonts.BOLD);
add(value);
}
public int getPreferredHeight() {
return Math.max(key.getHeight(), value.getHeight());
}
public int getPreferredWidth() {
return Display.getWidth()-20;
}
protected void sublayout(int arg0, int arg1) {
super.sublayout(arg0, arg1);
setExtent(getPreferredWidth(), getPreferredHeight());
}
}
將'LabelFields'放入'VerticalFieldManagers'內,然後將這些添加到每行的'HorizontalFieldManager'中。順便說一句,爲什麼你在密鑰的標籤中使用'RichTextField.USE_TEXT_WIDTH'? LabelField不會從rtf擴展,所以它可能會給您帶來意想不到的結果。與'TextField.NO_LEARNING'相同。 – 2012-02-08 13:59:55
由於只使用了'Field.NON_FOCUSABLE'和'Field.FOCUSABLE'樣式,並將LabelFields放在VFM中,我試過並得到了相同的結果。 – 2012-02-08 14:14:49
當然,它與這些標誌無關。問題在於RIM中的傢伙每次發佈都會改變行爲。 – 2012-02-08 14:25:16