对齐黑莓的布局设计问题

时间:2012-08-03 05:37:54

标签: java blackberry

我正在开发一个应用程序,我需要在HorizontalFieldManage中设置两个按钮。其中一个Bitmap应保持不变,另一个LabelField应保持水平居中。在这里,我已经尝试了很多次,但是无法在左侧设置Bitmap,所以请你帮我解决这个问题。

这是我的代码::

VerticalFieldManager VFM = new VerticalFieldManager(USE_ALL_WIDTH){
            public void paint(Graphics g) {
                g.setBackgroundColor(Color.WHITE);
                g.clear();
                super.paint(g);
            }
        };
        HorizontalFieldManager HFM = new HorizontalFieldManager(FIELD_HCENTER){
            public void paint(Graphics g) {
                g.setBackgroundColor(Color.WHITE);
                g.clear();
                super.paint(g);
            }
        };

        Bitmap logom1;
        logom1 = Bitmap.getBitmapResource("logo48X48.png");
        BitmapField imgField = new BitmapField(logom1,Field.FIELD_LEFT);
        LabelField RegistrationLbl = new LabelField("Registration",FIELD_HCENTER | FIELD_BOTTOM);

        FontFamily fontFamily[] = FontFamily.getFontFamilies();
        Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 20);
        font = fontFamily[1].getFont(Font.BOLD, 25);
        RegistrationLbl.setFont(font);

        HFM.add(imgField);
        HFM.add(RegistrationLbl);

        VFM.add(HFM);
        add(VFM);

2 个答案:

答案 0 :(得分:3)

Signare的一般解决方案可行,但左边距不太合适。在将标签添加到HFM对象之前,您需要添加的唯一调用是这些(为清晰起见,分为两行):

int labelX = (Display.getWidth() - RegistrationLbl.getPreferredWidth()) / 2;
RegistrationLbl.setMargin(0, 0, 0, labelX - imgField.getPreferredWidth());

这假定它所在的类(Manager)占据整个屏幕宽度(Display.getWidth())。

Read this for a good description of what margin is

另外,请注意setMargin()在6.0之前的API中未记录,但我相信它实际上可用(但未记录)回到OS 4.5左右。

编辑顺便说一下,您正在分配font对象,然后立即将其分配给其他对象。这看起来也不正确,虽然它不会影响标签中心的问题。

另一个编辑:,如Rupak的评论所示,此代码仅在您有固定的方向显示时才有效。如果标签应该在设备方向更改上再次居中,那么您需要更多。如果需要,请添加更多澄清问题,有人会帮忙!

答案 1 :(得分:0)

试试这个(这不是正确的方法) -

        HorizontalFieldManager VFM = new HorizontalFieldManager(){
        public void paint(Graphics g) {
        g.setBackgroundColor(Color.WHITE);
        g.clear();
        super.paint(g);
        }
        };

        HorizontalFieldManager LogoHFM = new HorizontalFieldManager(FIELD_LEFT);
        Bitmap logom1;
        logom1 = Bitmap.getBitmapResource("logo48X48.png");
        BitmapField imgField = new BitmapField(logom1);
        LogoHFM.add(imgField);


        LabelField RegistrationLbl = new LabelField("Registration",FIELD_HCENTER);
        FontFamily fontFamily[] = FontFamily.getFontFamilies();
        Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 20);
        font = fontFamily[1].getFont(Font.BOLD, 25);
        RegistrationLbl.setFont(font);
        RegistrationLbl.setMargin(0,0,0,(Display.getWidth()-logom1.getWidth())/4);


        VFM.add(LogoHFM);
        VFM.add(RegistrationLbl);
        add(VFM);
相关问题