Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在blackberry中水平和垂直居中放置标签_Blackberry - Fatal编程技术网

在blackberry中水平和垂直居中放置标签

在blackberry中水平和垂直居中放置标签,blackberry,Blackberry,我试图在垂直字段管理器中垂直和水平居中放置标签。我成功地使它水平居中,但没有垂直居中。问题是我尝试过的样式常量(Field.fieldvCenter、DrawStyle.VCENTER等)都没有。我得到了BlackBerry JRE 6的调试器,并为Bold 9900设备开发了调试器。有人能帮忙吗 VerticalFieldManager vfm_listeAeroport=new VerticalFieldManager (USE_ALL_WIDTH){

我试图在垂直字段管理器中垂直和水平居中放置标签。我成功地使它水平居中,但没有垂直居中。问题是我尝试过的样式常量(Field.fieldvCenter、DrawStyle.VCENTER等)都没有。我得到了BlackBerry 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
将使文本在标签内居中,而不是在其管理器内。例如,labelfield的高度可能为50px,manager的高度为100px,DrawStyle的中心位置为50px

我认为
FIELD\u 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建议的解决方案,即使用边距定位标签,并根据屏幕高度和宽度设置边距

凯文是100%正确的。VerticalFieldManager只占用所需的垂直空间,而不是整个屏幕。使用setBackground设置不同的背景色,以便在操作中看到这一点

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

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

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

你知道自由空间的唯一时间,是在场地布置的时候。管理者在其sublayout()方法中执行此操作。因此,要创建一个通用的“中心”管理器,您需要了解如何创建管理器。您还需要更多地了解MainScreen及其内部处理。为此,我推荐以下来自官方BB网站的知识库文章: