Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 视图不更新屏幕_Android_View_Android Canvas - Fatal编程技术网

Android 视图不更新屏幕

Android 视图不更新屏幕,android,view,android-canvas,Android,View,Android Canvas,我有一个视图,在那里我画了许多可能在运行时改变的线。这是我的onDraw函数: @Override protected void onDraw(Canvas canvas) { mainShape.draw(canvas); //canvas.drawLine(0,0, 100, 100, mStrokePaint); for (Rect dr : mLines) { canvas.drawLine(dr.left, dr.top, dr.right,

我有一个视图,在那里我画了许多可能在运行时改变的线。这是我的onDraw函数:

@Override
protected void onDraw(Canvas canvas) {

    mainShape.draw(canvas);
    //canvas.drawLine(0,0, 100, 100, mStrokePaint);
    for (Rect dr : mLines) {
        canvas.drawLine(dr.left, dr.top, dr.right, dr.bottom, mStrokePaint);
    }
}
然而,当我改变行数时,它不会反映在屏幕上。通过调试,我检查了它是否确实改变了MLINE中Rect元素的数量,并且它实际上在for循环中进行了正确的迭代次数


但不知何故,屏幕显示了初始行数(3)。我遗漏了什么吗?

尝试在您的onDraw末尾调用invalidate()。这将迫使视图更新自身

我意识到这是一个老问题,但是您永远不应该从onDraw()中调用invalidate()。实际上,您得到的是一个无限循环的重画相同的视图。