0
嗨,我想在黑莓創建一個多行的自定義標籤 我已經創建了一個自定義對話框,其中有一個或兩個按鈕,並顯示消息我已添加一個LabelField 但問題是如果消息文本太長而不能超出自定義對話框邊界 我需要一些自定義標籤,它將消息放在下一行中,我可以爲標籤定義寬度。黑莓的多行自定義標籤
嗨,我想在黑莓創建一個多行的自定義標籤 我已經創建了一個自定義對話框,其中有一個或兩個按鈕,並顯示消息我已添加一個LabelField 但問題是如果消息文本太長而不能超出自定義對話框邊界 我需要一些自定義標籤,它將消息放在下一行中,我可以爲標籤定義寬度。黑莓的多行自定義標籤
您應該將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);
}
}
此代碼段產生
在該管理器的sublayout()
方法修改maxWidth
到Display.getWidth()/2
(或maxWidth/2
)產生
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);
}
});
}
}
我覺得這個代碼好奇。在你顯示的代碼片段中,你重寫了'sublayout()',但是調用了'super.sublayout()'和傳遞給你的相同參數。在這種情況下,自定義'VerticalFieldManager'有什麼意義?我想也許你正在設置它來顯示如何使用maxWidth/2來實現**底部屏幕截圖?但是,這仍然很奇怪。如果你只想要一個半角的'LabelField',你爲什麼要將它嵌套在一個全角的'Manager'中?在我看來,如果內容將受到這種限制,那麼'Manager'本身應該是半角。 – Nate
@Nate我爲第二個例子設置了它(我強調說*「您可以通過修改管理器的sublayout()方法」*)中的maxWidth變量來更改標籤字段的寬度。否則,這是沒有用的。 – mrvincenzo
我有一個好奇心,這是否可以通過重寫LabelField的子佈局或佈局方法(哪個是可應用的)而不是垂直字段來實現,如果必須在VerticalFieldManager中添加其他元素 – Yatin