0

この画像のような UI を作成したい http://i.stack.imgur.com/bB8UM.png 。垂直および水平フィールド マネージャーのような基本的なマネージャーを使用します。しかし、水平マネージャーは機能しません。 2 人ではなく私の水平フィールド マネージャーです。その理由は何ですか?どこが間違っているのでしょうか?

これは私が使用している私のコードです-

package mypackage;

import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.system.*;

class TestScreen extends MainScreen{

    private VerticalFieldManager verticalManager;
    private BitmapField myBitmapField,tipOfTheDay,completeBitmapField,top30BitmapField;
    private FooterText mTextField;

    TestScreen() 
    {    
        super(NO_VERTICAL_SCROLL);

        verticalManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL|Manager.VERTICAL_SCROLLBAR)
        {
            public void paint(Graphics graphics)
            { 
                graphics.setBackgroundColor(0x00000000);
                graphics.clear();
                super.paint(graphics);
            }            
            protected void sublayout( int maxWidth, int maxHeight )
            {
                int width = Display.getWidth();
                int height = Display.getHeight();
                super.sublayout( width, height);
                setExtent( width, height);
            }
        };

        Bitmap logoBitmap = Bitmap.getBitmapResource("mybitmap1.png");
        myBitmapField = new BitmapField(logoBitmap, Field.FIELD_HCENTER);   

        verticalManager.add(myBitmapField);

        Bitmap mytipOfTheDay  = Bitmap.getBitmapResource("tipoftheday.png");

        verticalManager.add(tipOfTheDay = new BitmapField(mytipOfTheDay,Display.getWidth()));
        String text = "Lorem ipsum dolor sit amet, consectetuer \n"
            + "adipiscing elit, sed diam nonummy nibh euismod \n"
            + "tincidunt ut laoreet dolore magna aliquam erat  \n "
            + "volutpat. Ut wisi enim ad minim veniam, quis \n"
            + "nostrud exerci tation ullamcorper suscipit \n"
            + "lobortis nisl ut aliquip ex ea commodo consequat. \n"
            + "Duis autem vel eum iriure dolor in hendrerit in \n";
        verticalManager.add(mTextField = new FooterText(text, Display.getWidth(), Display.getHeight()/2));

        HorizontalFieldManager hfm = new HorizontalFieldManager();
        Bitmap complete  = Bitmap.getBitmapResource("Complete.png");
        Bitmap top30  = Bitmap.getBitmapResource("Top30.png");

        hfm.add(new BitmapField(complete));
        hfm.add(new BitmapField(top30));

        verticalManager.add(hfm);

        this.add(verticalManager);
    }
}
4

2 に答える 2

1

FieldHorizontalFieldManagers は次の で等間隔に配置され、HorizontalFieldManagerはその子を最大許容幅で収容します。

HorizontalFieldManager hfm = new HorizontalFieldManager() {
    protected void sublayout(int maxWidth, int maxHeight) {
        int w = maxWidth;
        int h = 0;
        Field f0, f1;
        if (getFieldCount() == 2) {
            f0 = getField(0);
            f1 = getField(1);

            layoutChild(f0, maxWidth / 2, maxHeight);
            layoutChild(f1, maxWidth / 2, maxHeight);

            h = Math.max(f0.getHeight(), f1.getHeight());

            setPositionChild(f0, (maxWidth/2 - f0.getWidth()) / 2, (h - f0.getHeight()) / 2);
            setPositionChild(f1, maxWidth/2 + (maxWidth/2 - f1.getWidth()) / 2, (h - f1.getHeight()) / 2);
        }
        setExtent(w, h);
    };
};
于 2012-04-23T12:30:36.537 に答える
0

これを試して -

    HorizontalFieldManager hfm = new HorizontalFieldManager(){
    protected void sublayout(int maxWidth, int maxHeight) 
      { 
      super.sublayout(Display.getWidth()/2,20);  
      setExtent(Display.getWidth()/2,20);
      }
    };
    Bitmap complete  = Bitmap.getBitmapResource("Complete.png");
    Bitmap top30  = Bitmap.getBitmapResource("Top30.png");

    hfm.add(new BitmapField(complete));
    hfm.add(new BitmapField(top30));
于 2012-04-23T12:06:02.877 に答える