Android EditText over SurfaceView

问题描述:

我有一个从SurfaceView继承的自定义视图,并且我在相同的RelativeLayout(自定义视图和EditText是布局的xml中的同胞)中有EditText。 当我使人们看到一个EditText,这样Android EditText over SurfaceView

setVisibility(View.VISIBLE); 

自定义视图接收的onDraw(帆布c)方法的调用连续。 有人知道为什么吗?我从不显式调用invalidate()。

+1

让我们来看看你的layout.xml – Moesio 2013-03-22 19:53:29

这里没有任何问题。这在正常的行为。 onDraw()被称为很多次,因为只要感觉到需要显示更改,Android就会重新绘制您的活动。有很多复杂的内部算法可以决定何时以及为什么重新绘制一个活动。 Android为我们照顾它,我们不需要担心它。

一旦一个活动重新绘制,它的所有孩子都会重绘。这发生在所有视图而不是自定义视图。请放心,您的代码没有任何问题。

想了解更多关于内部?查看source code查看课程!

+0

谢谢你的回答。我的自定义视图只在我调用invalidate方法时重绘,除了EditText可见的时候。 EditText不是孩子,而是自定义View的兄弟,我想问你:你能告诉我如何在EditText可见的时候抑制onDraw的连续调用吗?使其不可见停止在Draw调用,但我需要它有时可见。 – Catherine 2013-03-22 20:10:10

+0

你不应该试图压制它。这个行为是由android设计的。无论如何使用你的EditText。没有伤害。 – 2013-03-22 20:11:56