【发布时间】:2012-06-24 20:15:37
【问题描述】:
您好,我想在 Blackberry 中创建一个多行自定义标签 我创建了一个自定义对话框,它有一个或两个按钮并显示我添加了一个 LabelField 的消息 但是,问题是如果消息文本变得太长而不是超出自定义对话框边界 我需要一些定制的标签,将消息放在下一行,以适应我可能为标签定义的宽度。
【问题讨论】:
标签: blackberry custom-controls label
您好,我想在 Blackberry 中创建一个多行自定义标签 我创建了一个自定义对话框,它有一个或两个按钮并显示我添加了一个 LabelField 的消息 但是,问题是如果消息文本变得太长而不是超出自定义对话框边界 我需要一些定制的标签,将消息放在下一行,以适应我可能为标签定义的宽度。
【问题讨论】:
标签: blackberry custom-controls label
您应该将您的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);
}
}
这段代码 sn-p 产生
在经理的sublayout()方法中修改maxWidth为Display.getWidth()/2(或maxWidth/2)会产生
更新(正如 Yatin 建议的那样):不使用 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 来实现 bottom 屏幕截图?但是,这似乎仍然很奇怪。如果你只想要一个半角的LabelField,为什么要把它嵌套在一个全角的Manager 中呢?在我看来,Manager 本身应该是半角,如果它的内容将以这种方式受到限制。
VerticalFieldManager 所做的那样覆盖LabelField 的layout() 方法,但是,您将失去垂直滚动功能(以防文本很长)。
VerticalFieldManager 的示例更新了我的答案。