Android在画布顶部绘制9路径可绘制,而不是在指定位置绘制
我使用复杂背景创建自定义视图,它由两个元素组成:顶部为位图可绘制,下面为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
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。