0

我想BitmapField在整个屏幕的中心显示一个,在屏幕底部再显示一个。

我无法生成正确的 UI。

我试过这样 - 使用它我可以在底部放置一个位图,但不能保持中心BitmapField

请任何人帮我解决这个问题。

VerticalFieldManager vfm = new VerticalFieldManager(VerticalFieldManager.USE_ALL_HEIGHT
   | VerticalFieldManager.USE_ALL_WIDTH) {
    //Override the paint method to draw the background image.
    public void paint(Graphics graphics) {
        graphics.setBackgroundColor(Color.DEEPSKYBLUE);
        graphics.clear();
        super.paint(graphics);
    }
};

add(vfm);
HorizontalFieldManager customManager = new HorizontalFieldManager(HorizontalFieldManager.USE_ALL_WIDTH)
{
    /* (non-Javadoc)
    * Applying background color for that Manager
    * @see net.rim.device.api.ui.Manager#paint(net.rim.device.api.ui.Graphics)
    */
    public void paint(Graphics graphics)
    {
        graphics.setBackgroundColor(Color.DEEPSKYBLUE);//blue
        graphics.clear();
        super.paint(graphics);
    }

    /* (non-Javadoc)
    * Placing the Fields
    * @see net.rim.device.api.ui.container.HorizontalFieldManager#sublayout(int, int)
    */
    protected void sublayout(int width, int height) {       
        setPositionChild(getField(0), 0, 0);
        layoutChild(getField(0), getField(0).getPreferredWidth(),
                    getField(0).getPreferredHeight());

        setPositionChild(getField(1),
                         Display.getWidth()/2 - getField(1).getPreferredWidth()/2,
                         0);
        layoutChild(getField(1), getField(1).getPreferredWidth(),
                    getField(1).getPreferredHeight());

        setPositionChild(getField(2),
                         Display.getWidth() - getField(2).getPreferredWidth(),
                         0);
        layoutChild(getField(2), getField(2).getPreferredWidth(),
                    getField(2).getPreferredHeight());

        setExtent(width, 50);
    }
};

//To display About icon
final Bitmap bmp1 = Bitmap.getBitmapResource("a.png");
BitmapField bmpfield1 = new BitmapField(bmp1, BitmapField.FOCUSABLE | BitmapField.FIELD_LEFT){
    //To Perform action on clicking the bitmap field
    protected boolean navigationClick(int status, int time)
    {            
        UiApplication.getUiApplication().pushScreen(new AboutScreen());
        onUnfocus();
        return true;
    }

    protected void onFocus(int direction) {
        super.onFocus(direction);    
    }

    protected void onUnfocus() {
        super.onUnfocus();
        invalidate();
    }
};

//To display Help icon
final Bitmap bmp2 = Bitmap.getBitmapResource("b.png");
BitmapField bmpfield2 = new BitmapField(bmp2,BitmapField.FOCUSABLE | BitmapField.FIELD_RIGHT){
    //To Perform action on clicking the bitmap field
    protected boolean navigationClick(int status, int time)
    {            
        UiApplication.getUiApplication().pushScreen(new  
            OpenBrowserScreen(""));
        onUnfocus();
        return true;
    }

    protected void onFocus(int direction) {
        super.onFocus(direction);            
    }

    protected void onUnfocus() {
        super.onUnfocus();
        invalidate();
    }
};

//To display Title Bitmap
final Bitmap bmp3 = Bitmap.getBitmapResource("c.png");
BitmapField bmpfield3 = new BitmapField(bmp3, BitmapField.FIELD_VCENTER | BitmapField.FOCUSABLE);
bmpfield3.setBitmap(bmp3);

//Adding the Three fields to the manager
customManager.add(bmpfield1);
customManager.add(bmpfield3);
customManager.add(bmpfield2);
vfm. add(customManager);

bmpfield3.setFocus();

HorizontalFieldManager hfm = new HorizontalFieldManager(Field.FIELD_HCENTER);
//VerticalFieldManager vfmfields = new VerticalFieldManager(VerticalFieldManager.FIELD_HCENTER|Field.USE_ALL_HEIGHT);
bmpscan = Bitmap.getBitmapResource("test1.png");
bmpfieldscan = new BitmapField(bmpscan,BitmapField.FOCUSABLE |Field.FIELD_VCENTER);
hfm.add(bmpfieldscan);
vfm.add(hfm);
HorizontalFieldManager hfmacnts = new HorizontalFieldManager(HorizontalFieldManager.USE_ALL_HEIGHT | HorizontalFieldManager.FIELD_BOTTOM);

bmpacnts = Bitmap.getBitmapResource("test2.png");
bmpfieldacnts = new BitmapField(bmpacnts,BitmapField.FOCUSABLE | Field.FIELD_BOTTOM) {
    protected boolean navigationClick(int status, int time)
    {
        return true;
    }
};
hfmacnts.add(bmpfieldacnts);
vfm.add(hfmacnts);
4

1 回答 1

0

像这样试试

VerticalFieldManager vfm = new VerticalFieldManager(USE_ALL_HEIGHT);

BitmapField btf1 = new BitampField(bitmap,FIELD_HCENTER);
BitmapField btf2 = new BitampField(bitmap1,FIELD_HCENTER);

HorizontalFieldManager hfm1 = new HorizontalFieldManager(USE_ALL_WIDTH | FIELD_VCENTER);
HorizontalFieldManager hfm2 = new HorizontalFieldManager(USE_ALL_WIDTH | FIELD_BOTTOM);

hfm1.add(btf1);
hfm2.add(btf2);


vfm.add(hfm1);
vfm.add(hfm2);

add(vfm);
于 2013-02-01T16:20:52.043 回答