2

で2つのボタンを設定する必要があるアプリケーションを開発していますHorizontalFieldManage。1つBitmapは左にとどまり、もう1つは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);
4

2 に答える 2

3

シナーレの一般的な解決策は機能する可能性がありますが、左マージンは完全に正しくありませんでした。HFMオブジェクトにラベルを追加する前に、追加する必要がある唯一の呼び出しは次のとおりです(わかりやすくするために2行に分割) 。

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

Managerこれは、これが含まれるクラス( )が全画面幅()を占めることを前提としていますDisplay.getWidth()

マージンとは何かについての適切な説明については、これをお読みください

また、setMargin()これは6.0より前のAPIでは文書化されていませんでしたが、実際にはOS 4.5程度に戻って利用可能であった(ただし文書化されていない)と思います。

編集:ちなみに、あなたはあなたのfontオブジェクトを割り当て、そしてすぐにそれを他のものに割り当てています。ラベルの中央揃えの問題には影響しませんが、それも正しく見えません。

別の編集: Rupakのコメントに示されているように、このコードは、固定方向の表示がある場合にのみ機能します。ラベルがデバイスの向きの変更に再び集中することになっている場合は、これ以上のものが必要です。必要に応じて、質問にさらに説明を追加してください。誰かが助けてくれます。

于 2012-08-03T08:55:08.943 に答える
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);
于 2012-08-03T07:11:31.087 に答える