gpt4 book ai didi

android - 在我的 LinearLayout 上画东西?

转载 作者:太空狗 更新时间:2023-10-29 15:39:13 31 4
gpt4 key购买 nike

我正在扩展 LinearLayout:

public class MyLinearLayout extends LinearLayout {
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

Paint paint = new Paint();
paint.setColor(0xFFFF0000);
canvas.drawLine(0, 0, getWidth(), getHeight(), paint);
}
}

如果布局有子元素,上面的红线不应该画在它们上面吗?考虑这样的布局:

<MyLinearLayout>
<ImageView />
</MyLinearLayout>

我希望在子 ImageView 上方绘制红线。但它被绘制在它下面。我假设在 super.onDraw() 行完成后,所有子绘图都会完成。

在所有子绘图完成后,是否有办法到达 Canvas 并在其上绘制一些东西?

谢谢

最佳答案

布局不会绘制,除非您调用 setWillNotDraw(false);。他们这样做是出于效率原因。

编辑:

onDraw() 实际上只是允许您在绘图操作发生之前修改 Canvas。它实际上并不绘制。你想要做的是像这样覆盖 draw():

@Override
protected void draw(Canvas canvas) {
super.draw(canvas);

Paint paint = new Paint();
paint.setColor(0xFFFF0000);
canvas.drawLine(0, 0, getWidth(), getHeight(), paint);
}

调用 super 将绘制 View 中的所有子项。然后它将绘制所有线条。不过,我仍然相信您需要调用 setWillNotDraw(false)

关于android - 在我的 LinearLayout 上画东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10727225/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com