gpt4 book ai didi

java - 删除 View 的子级然后读取它后, View 将无法正常显示

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:39 25 4
gpt4 key购买 nike

我创建了一个包含两个 View 的 View 。一旦 View 为等候室 (A) 和第二 View (B),就可以接听电话。

调用到达 View A 后,将调用第二个 View (B)。有用。如果用户完成了交互,他应该返回到 View (A)。不幸的是,这不起作用。

这是调用 View B 的代码。这很好用。

// 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();

下面是隐藏 View B 并再次显示 View A 的代码。这效果不太好。这是只显示白色页面的问题。 Activity 内的元素丢失。

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();

你知道出了什么问题吗?感谢您的帮助。

最佳答案

解决方案是必须重新计算 View 的大小。重新计算度量后,您必须执行以下行:

this.view.requestLayout ();

之后将显示正确的 View 。

关于java - 删除 View 的子级然后读取它后, View 将无法正常显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55459733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com