【发布时间】:2013-12-11 11:02:19
【问题描述】:
我有一个自定义的ViewGroup,我将覆盖它的dispatchDraw 并绘制一些额外的Paths,看起来像这样:
@Override
public void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
canvas.setMatrix(matrix);
mRegions.clear();
canvas.drawPicture(mPicture);
if (drawShader) {
canvas.drawBitmap(mShader, 0, 0, mBitmapPaint);
}
for (int i = 0; i < mPaths.size(); i++) {
if (mIndex != -1 && mIndex == i) {
canvas.save();
canvas.drawRect(mRect, mPaint);
drawPaths(canvas, mPaths.get(i));
canvas.clipPath(mPaths.get(i), Region.Op.INTERSECT);
canvas.drawColor(mOverlayColor);
Rect f = mRegions.get(i).getBounds();
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(f.centerX() - mRadius, f.centerY() - mRadius, mRadius, mPaint);
canvas.restore();
} else {
drawPaths(canvas, mPaths.get(i));
}
}
}
现在我想要添加一个孩子,该孩子将放置在dispatchDraw 上绘制的这些东西之上。现在我正在这样做:
mBalloon = LayoutInflater.from(getContext()).inflate(R.layout.map_balloon, null);
LayoutParams params = new LayoutParams(500, 150);
mBalloon.setLayoutParams(params);
addView(mBalloon);
bringChildToFront(getChildAt(0));
在我的ViewGroup 的构造函数中调用的init() 方法中,结果是dispatchDraw 中的绘图被放置在mBalloon 之上。
知道如何将我的View - mBalloon 放在来自dispatchDraw 的东西上方吗?
提前致谢!
【问题讨论】:
-
您是否尝试在自定义绘图后调用 drawChild?
标签: android android-view viewgroup