【问题标题】:Multiline Custom Label in blackberry黑莓中的多行自定义标签
【发布时间】:2012-06-24 20:15:37
【问题描述】:

您好,我想在 Blackberry 中创建一个多行自定义标签 我创建了一个自定义对话框,它有一个或两个按钮并显示我添加了一个 LabelField 的消息 但是,问题是如果消息文本变得太长而不是超出自定义对话框边界 我需要一些定制的标签,将消息放在下一行,以适应我可能为标签定义的宽度。

【问题讨论】:

    标签: blackberry custom-controls label


    【解决方案1】:

    您应该将您的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()方法中修改maxWidthDisplay.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);
                }
            });    
        }
    }
    

    【讨论】:

    • 我觉得这段代码很奇怪。在您显示的 sn-p 中,您将覆盖 sublayout(),但使用传递给您的相同参数调用 super.sublayout()。在这种情况下,自定义VerticalFieldManager 的意义何在?我想也许您正在设置它以显示如何通过使用 maxWidth/2 来实现 bottom 屏幕截图?但是,这似乎仍然很奇怪。如果你只想要一个半角的LabelField,为什么要把它嵌套在一个全角的Manager 中呢?在我看来,Manager 本身应该是半角,如果它的内容将以这种方式受到限制。
    • @Nate第二个例子我已经设置好了(我强调了“你可以通过修改管理器的sublayout()方法中的maxWidth变量来改变标签字段的宽度” )。否则,没有用。
    • 我很好奇,如果必须在 VerticalFieldManager 中添加其他元素,是否可以仅通过覆盖 LabelField 的子布局或布局方法(适用)而不是 Vertical 字段来实现这一点
    • @YatinK 实际上,你可以。您可以像我对VerticalFieldManager 所做的那样覆盖LabelFieldlayout() 方法,但是,您将失去垂直滚动功能(以防文本很长)。
    • @YatinK 我已经用一个不使用 VerticalFieldManager 的示例更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多