【问题标题】:Placing one field to be center and another field to be bottom in blackberry在黑莓中将一个字段置于中心,将另一个字段置于底部
【发布时间】:2013-01-30 08:49:17
【问题描述】:

我想在整个屏幕的中心显示一个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);

【问题讨论】:

    标签: blackberry user-interface bitmapfield


    【解决方案1】:

    这样试试

    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);
    

    【讨论】:

      猜你喜欢
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多