Android在画布顶部绘制9路径可绘制,而不是在指定位置绘制

Android在画布顶部绘制9路径可绘制,而不是在指定位置绘制,android,canvas,view,drawable,draw,Android,Canvas,View,Drawable,Draw,我使用复杂背景创建自定义视图,它由两个元素组成:顶部为位图可绘制,下面为9路径可绘制 我的代码是: public class MyCustomFrame extends FrameLayout { Drawable main, top; public RequestInfoBottomContainer(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, d

我使用复杂背景创建自定义视图,它由两个元素组成:顶部为位图可绘制,下面为9路径可绘制

我的代码是:

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);

    }
}
例如,如果顶部可绘制高度为10px,宽度为500px,高度为200px,我将边界0、10500、200设置为主可绘制边界,Android将其绘制为0、0500、200边界。也就是说,主要图纸位于顶部


我做错了什么?

我做了一些小工作,但这是没有好处的

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();

top.getIntrinsicHeight()
可能返回0。你能检查一下吗?它总是返回大于0的值。在我的例子中,值是10。