0

複雑な背景を持つカスタム ビューを作成します。これは、上部にビットマップ ドローアブル、下に 9 パス ドローアブルの 2 つの要素で構成されます。

私のコードは次のとおりです。

public class MyCustomFrame extends FrameLayout
{
    Drawable main, top;

    public RequestInfoBottomContainer(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);

         main = res.getDrawable(R.drawable.bg_main);
         top = res.getDrawable(R.drawable.bg_top);
    }


    @Override
    protected void onDraw(Canvas canvas)
    {
        int width = getMeasuredWidth();
        int height = canvas.getHeight();


        top.setBounds(0, 0, width, top.getIntrinsicHeight());
        main.setBounds(0, top.getIntrinsicHeight(), width, height);

        top.draw(canvas);
        main.draw(canvas);

    }
}

たとえば、上部の描画可能な高さが 10 ピクセル、幅が 500 ピクセル、高さが 200 ピクセルで、境界 0、10、500、200 をメインの描画可能な Android に設定すると、0、0、500、200 の境界が描画されます。つまり、メインが上に描画されます。

私は何を間違っていますか?

4

1 に答える 1

0

私は小さな回避策を立てますが、それは良くありません。

Bitmap bmp = Bitmap.createBitmap(width, height - top.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
main.setBounds(0, 0, width, bmp.getHeight());
main.draw(new Canvas(bmp));
canvas.drawBitmap(bmp, 0, top.getIntrinsicHeight(), null);
bmp.recycle();
于 2013-08-02T05:53:23.153 に答える