View上的onDraw()绘制了布局

Nic*_*ick 12 android gallery ondraw

好的,这是交易.我想在扩展库类中移动项目以更改图像的顺序.我现在这样做的方式:

  • 长按删除当前所选项目,
  • 用于onDraw()绘制相同的图像,以便我可以使用它移动它onTouchEvent()
  • 在发布时再次添加该项目

这工作正常,但问题是,当使用该onDraw()方法时,它将绘制图库项目后面的图像.有没有办法改变绘制的优先级?

Nic*_*ick 34

好吧,我进入一个完全不同的方向后发现了这个= /

以下是具有相同问题的人的解决方案:

在构造函数(或初始化组件的任何其他位置)设置setWillNotDraw(false)和覆盖dispatchDraw().dispatchDraw()吸引ViewGroup孩子,这样你就可以自己决定是否要在其他视图的后面或顶部绘制.

Gallery视图顶部的自定义绘图中获取的示例(及其子视图)

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

    // do your drawing stuff here
    canvas.drawPath(mPath,mPaint);
}
Run Code Online (Sandbox Code Playgroud)

  • +1,因为通过搜索很难找到此信息.成功使用此方法在GridView上绘制onScreen帮助.小错字:应该调用setWillNotDraw(false); willNotDraw()是同一参数的getter.注意:setWillNotDraw(false)禁用优化,假设ViewGroup完全依赖其子视图来绘制自己. (2认同)