- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在扩展 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/
我想以 headless 模式(屏幕上根本没有 GUI)将 JPanel 绘制到 BufferedImage 中。 final JPanel panel = createPanel(); panel.
我是 Canvas 的新手,正在尝试创建看起来逼真的 float 粒子动画。 目前,我正在创建 400 个随机散布在 400x400 Canvas 上的粒子。 然后,在每个 requestAnimat
有没有办法在悬停时停止悬 float 画? :hover 这是一个显示动画的链接: https://codepen.io/youbiteme/pen/RprPrN 最佳答案 只需为您的 svg 悬停添
我想在谷歌地图上绘制覆盖图,其中除了特定点周围 1.5 公里半径以外的所有内容都被遮蔽了。为此,我尝试使用带有大量边框的圆圈,所以我会在边框中放置透明中心和覆盖颜色来实现这一点,但它无法渲染。
我正在尝试通过扩展类 UIView 来创建自定义 View ,该类可以在自定义 View 的中心显示一个圆圈。为了添加自定义绘图,我重写了 draw(_ rect: CGRect) 方法,如下所示。
我是一名优秀的程序员,十分优秀!