2012-06-24 63 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