2012-06-24 64 views
0

嗨,我想在黑莓創建一個多行的自定義標籤 我已經創建了一個自定義對話框,其中有一個或兩個按鈕,並顯示消息我已添加一個LabelField 但問題是如果消息文本太長而不能超出自定義對話框邊界 我需要一些自定義標籤,它將消息放在下一行中,我可以爲標籤定義寬度。黑莓的多行自定義標籤

回答

3

您應該將LabelField添加到VerticalFieldManager。這個答案是基於我的回答here。您可以通過修改經理的sublayout()方法中的maxWidth變量來更改標籤字段的寬度。

public final class CustomScreen extends MainScreen { 
    public CustomScreen() { 
     String longString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel lorem eget tortor hendrerit adipiscing. Curabitur mollis pellentesque est ac."; 

     VerticalFieldManager vfm = new VerticalFieldManager(Manager.USE_ALL_WIDTH | Manager.NO_HORIZONTAL_SCROLL) { 
      protected void sublayout(int maxWidth, int maxHeight) { 
       super.sublayout(maxWidth, maxHeight); 
      }; 
     }; 

     vfm.add(new LabelField(longString)); 
     add(vfm);  
    } 
} 

此代碼段產生 enter image description here

在該管理器的sublayout()方法修改maxWidthDisplay.getWidth()/2(或maxWidth/2)產生

enter image description here

UPDATE(如雅鼎建議的):一沒有你可以實現相同的功能請唱VerticalFieldManager,但如果文字不能垂直放置,垂直滾動將不可用。

public final class CustomScreen extends MainScreen { 
    public CustomScreen() { 
     String longString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vel lorem eget tortor hendrerit adipiscing. Curabitur mollis pellentesque est ac."; 

     add(new LabelField(longString) { 
      protected void layout(int width, int height) { 
       super.layout(width/2, height); 
      } 
     });  
    } 
} 
+0

我覺得這個代碼好奇。在你顯示的代碼片段中,你重寫了'sublayout()',但是調用了'super.sublayout()'和傳遞給你的相同參數。在這種情況下,自定義'VerticalFieldManager'有什麼意義?我想也許你正在設置它來顯示如何使用maxWidth/2來實現**底部屏幕截圖?但是,這仍然很奇怪。如果你只想要一個半角的'LabelField',你爲什麼要將它嵌套在一個全角的'Manager'中?在我看來,如果內容將受到這種限制,那麼'Manager'本身應該是半角。 – Nate

+1

@Nate我爲第二個例子設置了它(我強調說*「您可以通過修改管理器的sublayout()方法」*)中的maxWidth變量來更改標籤字段的寬度。否則,這是沒有用的。 – mrvincenzo

+0

我有一個好奇心,這是否可以通過重寫LabelField的子佈局或佈局方法(哪個是可應用的)而不是垂直字段來實現,如果必須在VerticalFieldManager中添加其他元素 – Yatin