Java 删除视图的子级并读取后,视图将无法正确显示
我创建了一个包含两个视图的视图。一旦将一个视图设置为等候室(a)和第二个视图(B),就可以接听电话 调用到达视图a后,第二个视图将是invoke(B)。它起作用了。如果用户完成了交互,他应该返回视图(A)。不幸的是,这不起作用 下面是调用视图B的代码。这很好Java 删除视图的子级并读取后,视图将无法正确显示,java,android,android-view,Java,Android,Android View,我创建了一个包含两个视图的视图。一旦将一个视图设置为等候室(a)和第二个视图(B),就可以接听电话 调用到达视图a后,第二个视图将是invoke(B)。它起作用了。如果用户完成了交互,他应该返回视图(A)。不幸的是,这不起作用 下面是调用视图B的代码。这很好 // Add view to content OVSLobbyActivity.this.rootWaitingRoom.view.setVisibility(View.GONE); OVSLobbyActivity.this.root.r
// Add view to content
OVSLobbyActivity.this.rootWaitingRoom.view.setVisibility(View.GONE);
OVSLobbyActivity.this.root.removeChild(OVSLobbyActivity.this.rootWaitingRoom);
OVSLobbyActivity.this.root.appendChild(OVSLobbyActivity.this.rootCallRoom);
OVSLobbyActivity.this.rootCallRoom.view.setVisibility(View.VISIBLE);
// Set fullscreen
OVSLobbyActivity.this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
OVSLobbyActivity.this.onWindowFocusChanged(true);
// force to change the layout
root.view.invalidate();
root.view.requestLayout();
下面是隐藏视图B并再次显示视图A的代码。这并不奏效。这里的问题是,只会显示一个白色页面。活动中的元素丢失
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
this.onWindowFocusChanged(false);
this.rootCallRoom.view.setVisibility(View.GONE);
this.root.removeChild(OVSLobbyActivity.this.rootCallRoom);
this.root.appendChild(OVSLobbyActivity.this.rootWaitingRoom);
this.rootWaitingRoom.view.setVisibility(View.VISIBLE);
// force to change the layout
root.view.invalidate();
root.view.forceLayout();
root.view.requestLayout();
你知道怎么了吗?
谢谢您的帮助。解决方案是必须重新计算视图的大小。重新计算度量值后,必须执行以下行: this.view.requestLayout()
之后将显示正确的视图。解决方案是必须重新计算视图的大小。重新计算度量值后,必须执行以下行: this.view.requestLayout() 之后将显示正确的视图