0

ページの中央にボックスを表示し、解像度と表示が異なるこのカスタム ビューがあります。

(テキストなどに関連するすべてのコードを削除しました):

public class CustomView extends View {

    public CustomView(Context context, AttributeSet attrs) {

        super(context, attrs);
    }



    @Override
    protected void onDraw(Canvas canvas) {


        Paint x = new Paint();
        x.setColor(Color.BLUE);


        Resources r = getResources();               

        //dimension of display
         int displayW = r.getDisplayMetrics().widthPixels;
         int displayH = r.getDisplayMetrics().heightPixels;

         //
         int boxW = 200;
         int boxH = 300;

         //actual box dimensions
         float boxEffettivaW = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, boxW, r.getDisplayMetrics());
         float boxEffettivaH = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, boxH, r.getDisplayMetrics());



         float left = (displayW-boxEffettivaW) / 2;
         float top = (displayH-boxEffettivaH) / 2;
         float right = left + boxEffettivaW;
         float bottom = top + boxEffettivaH;


        RectF boxf = new RectF();
        boxf.set(left,top,right,bottom);    
        canvas.drawRect(boxf, x);       



    }

}

私の問題は、Android アプリケーションのタイトル バーと通知バーのために、ボックスが中央に配置されていないことです。スクリーンショット

では、どうすればボックスを中央に配置できますか? グローバルな表示サイズではなく、実際のアプリ専用表示領域のサイズを知る必要があります...

4

0 に答える 0