我有一个自定义的LinearLayout类,它会覆盖它的onDraw()方法。它进入ListView的每一行,如第三张图所示。在向上滚动列表视图之前,一切看起来都很棒。然后,从drawLine()调用渲染的虚线将通过位于ListView上方的LinearLayout绘制。这很奇怪,因为橙色圆角矩形没有出现这个问题。
我的自定义LinearLayout会调用" this.setWillNotDraw(false);"我试着调用" LinearLayout1.postinvalidate();"在ListView的onScrollListener中,它无法让顶部的LinearLayout重绘。我该怎么做才能防止线条在LinearLayout之上绘制?
答案 0 :(得分:0)
必须采用以下解决方法:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap offScreenBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas offScreenCanvas = new Canvas(offScreenBitmap);
// do your drawings onto offScreenBitmap here
Paint offScreenPaint = new Paint();
offScreenPaint.setAntiAlias(true);
offScreenPaint.setFilterBitmap(true);
offScreenPaint.setDither(true);
canvas.drawBitmap(offScreenBitmap,0,0,offScreenPaint);
}
我的代码实际上在开始时准备了offScreenBitmap,因为它的内容是静态的,只需要绘制一次。