我有一个从 SurfaceView 继承的自定义视图,并且我在同一个 RelativeLayout 中有 EditText(自定义视图和 EditText 都是布局 xml 中的兄弟姐妹)。当我使 EditText 可见时,以这种方式
setVisibility(View.VISIBLE);
自定义视图接收 onDraw(Canvas c) 方法的连续调用。有人知道为什么吗?我从来没有明确地调用过 invalidate() 。
我有一个从 SurfaceView 继承的自定义视图,并且我在同一个 RelativeLayout 中有 EditText(自定义视图和 EditText 都是布局 xml 中的兄弟姐妹)。当我使 EditText 可见时,以这种方式
setVisibility(View.VISIBLE);
自定义视图接收 onDraw(Canvas c) 方法的连续调用。有人知道为什么吗?我从来没有明确地调用过 invalidate() 。
这里没有任何问题。这是正常行为。onDraw()
被调用了很多次,因为 Android 会在感觉需要显示更改时重绘您的活动。有许多复杂的内部算法可以决定何时以及为何重绘活动。Android 会为我们处理它,我们不需要担心它。
一旦重绘了一个活动,它的所有子项也会被重绘。所有视图都会发生这种情况,而不是自定义视图。请放心,您的代码没有任何问题。
有兴趣了解更多关于内部的信息吗?查看View 类的源代码!