0

ラベルのキャプションを垂直方向の中央に揃える必要があるロジックに取り組んでいますが、機能していません。

テキストのパディングを設定しようとしましたが、背景のあるラベル全体がずれています。これを解決する方法はありますか。

これが私のコードです:

final Bitmap tabBackGroundImage1 = Bitmap.getBitmapResource("box_img.png");
homeContentManager.setBorder( BorderFactory.createBitmapBorder(
    new XYEdges(16,16,16,16), tabBackGroundImage));
//homeContentManager.setBorder(roundedBourder);

//HOME SCREEN HORIZONTAL MANAGER
buddiesLabel=new LabelField("Buddies");

_bitmap = EncodedImage.getEncodedImageResource("buddies.png");
final BitmapField buddiesBmp = new BitmapField(Constant.sizePic(_bitmap, 
                                      _bitmap.getHeight(), _bitmap.getWidth()));
buddiesBmp.setMargin(3,5,0,5);

if(BuddyListField.onlineBuddyCount < 1000) {
    buddyCount=new LabelField(" "+BuddyListField.onlineBuddyCount+" "){
        /*public void setText(String text,int offset,int length){
            text = String.valueOf(BuddyListField.onlineBuddyCount);
            offset = 200;
            length = 5;
            super.setText(text, offset, length);
        }*/
        public int getPreferredHeight() {
            return tabBackGroundImage1.getHeight();
        }
        public int getPreferredWidth() {
            return  tabBackGroundImage1.getWidth();
        }

        protected void layout(int width, int height) {
            super.layout(width, height);
            setExtent(Math.min(width, tabBackGroundImage1.getWidth()), Math.min(height, tabBackGroundImage1.getHeight()));
        }
        protected void paint(Graphics graphics) {
            int deviceWidth=net.rim.device.api.system.Display.getWidth();
            int deviceHeight=net.rim.device.api.system.Display.getHeight();

            graphics.clear();
            graphics.drawBitmap(0, 0, deviceWidth,
            deviceHeight, tabBackGroundImage1, 0, 0);
            super.paint(graphics);
        }
    };

これは出力です:

ここに画像の説明を入力

しかし、背景の垂直方向の中央にゼロを設定する必要があります。

4

1 に答える 1

0

このようにしてみてください

protected void paint(Graphics graphics) {
            int deviceWidth=net.rim.device.api.system.Display.getWidth();
            int deviceHeight=net.rim.device.api.system.Display.getHeight();

            graphics.clear();
            graphics.drawBitmap(0, 0, deviceWidth,
            deviceHeight, tabBackGroundImage1, 0, 0);

            graphics.drawText((getPreferredWidth()-getText())/2,(getPreferredHeight()-graphics.getFont().getHeight())/2,getText);

//            super.paint(graphics);
        }
于 2013-02-01T16:41:09.490 に答える