中心的标签水平和垂直在黑莓

  • 本文关键字:垂直 水平 标签 blackberry
  • 更新时间 :
  • 英文 :


我试图在垂直字段管理器中垂直和水平放置标签。我已经成功地将它水平居中,但不是垂直居中。问题是,没有一个样式常数我已经尝试过(字段。FIELD_VCENTER DrawStyle。VCENTER等等)。我得到了黑莓JRE 6的调试器,我为Bold 9900设备开发。有人能帮忙吗?

 VerticalFieldManager vfm_listeAeroport=new VerticalFieldManager (USE_ALL_WIDTH){
                    protected void sublayout(int maxWidth, int maxHeight) {
                        super.sublayout(2*Display.getWidth()/3,70);
                        setExtent(2*Display.getWidth()/3,70);
                    }
                    protected void paint(Graphics g){
                        super.paint(g);
                        setBackground(BackgroundFactory.createSolidBackground(0xefc94c));
                    }
                };
    String mText = "Liste des Aéroports";
    LabelField Label = new LabelField(mText,Field.FIELD_HCENTER) {
             public void paint(Graphics graphics){ 
                 graphics.setColor(0xffffff); 
                  super.paint(graphics);           
                   }
                };  
    vfm_listeAeroport.add(Label);
    add(vfm_listeAeroport);

谢谢!

DrawStyle.VCENTER将文本居中在标签,而不是在它的管理器。例如,标签域的高度为50px,管理器的高度为100px, DrawStyle将以50px为中心。

我认为FIELD_VCENTER不工作,因为它在VerticalFieldManager内。

在这种情况下,我只需要为标签设置一个空白。

int margin_top = (Display.getHeight() - label.getPreferredHeight()) / 2;
int margin_left = (Display.getWidth() - label.getPreferredWidth()) / 2;
label.setMargin(margin_top,0,0,margin_left);

只是评论Kevin建议的解决方案,即通过使用页边距来定位标签,并根据屏幕的高度和宽度设置页边距。

Kevin 100%正确。VerticalFieldManager只占用所需的垂直空间,而不是整个屏幕。使用setBackground设置一个不同的背景颜色来观察它的运行。

Kevin的解决方案使包含的标签的大小更大,所以现在VFM将占用更多的空间。

您不需要使用Kevin的解决方案来设置左右边距-正如您已经看到的,VFM将使用Field_HCENTER水平居中。

kevin的解决方案的问题,实际上是任何试图猜测需要多少空间的解决方案的问题,是当屏幕上有其他东西时,例如标题区域或横幅,它将失败。问题是使用Display.getHeight(),它获得所需的实际高度,而不是屏幕上的"空闲"空间。

您唯一知道空闲空间的时间是在布局Field的时候。管理器在sublayout()方法中执行此操作。所以要创建一个通用的"定心"管理器,你需要了解如何创建一个管理器。您还需要对主屏幕及其内部处理有更多的了解。为此,我推荐以下来自BB官方网站的KB文章:

自定义经理

扩展管理器

MainScreen解释

最新更新