Android在SurfaceView上编辑文本

Android在SurfaceView上编辑文本,android,user-interface,android-edittext,surfaceview,Android,User Interface,Android Edittext,Surfaceview,我有一个从SurfaceView继承的自定义视图,并且在同一个RelativeLayout中有EditText(自定义视图和EditText在布局的xml中是同级的)。 当我使EditText可见时,通过这种方式 setVisibility(View.VISIBLE); 自定义视图接收对onDraw(Canvas c)方法的连续调用。 有人知道为什么吗?我从未显式调用invalidate()。这里没有任何错误。这是正常行为onDraw()被多次调用,因为Android会在感觉需要显示更改时重新

我有一个从SurfaceView继承的自定义视图,并且在同一个RelativeLayout中有EditText(自定义视图和EditText在布局的xml中是同级的)。 当我使EditText可见时,通过这种方式

setVisibility(View.VISIBLE);
自定义视图接收对onDraw(Canvas c)方法的连续调用。
有人知道为什么吗?我从未显式调用invalidate()。

这里没有任何错误。这是正常行为
onDraw()
被多次调用,因为Android会在感觉需要显示更改时重新绘制您的活动。有许多复杂的内部算法决定何时以及为什么重新绘制活动。安卓系统为我们解决了这个问题,我们不需要担心

一旦一个活动被重画,它的所有子项也都会被重画。所有视图都会发生这种情况,而不是自定义视图。请放心,您的代码没有任何问题


有兴趣了解更多关于内部的信息吗?查看查看类的链接

让我们看看你的布局。谢谢你的回答。我的自定义视图仅在调用invalidate方法时重绘,EditText可见时除外。EditText不是自定义视图的子视图,而是同级视图,我想问您:您能告诉我如何在EditText可见时禁止连续调用onDraw吗?使它不可见会停止原始调用,但有时我需要它可见。你不应该试图抑制它。这种行为是安卓的初衷。不管你想要什么,都可以使用你的编辑文本。没有害处。