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