如何从 Activity RootView 中删除视图
Posted
技术标签:
【中文标题】如何从 Activity RootView 中删除视图【英文标题】:How to remove View from Activity RootView 【发布时间】:2013-03-11 21:53:02 【问题描述】:我正在尝试删除膨胀的视图。这就是我膨胀视图的方式:
ViewGroup vg = (ViewGroup)findViewById(android.R.id.content).getRootView();
mOverflowMenuView = View.inflate(this, R.layout.overflow_menu, vg);
这就是我尝试从 onBackPressed 中删除它的方式
ViewGroup vg = (ViewGroup)(mOverflowMenuView.getParent());
vg.removeView(mOverflowMenuView);
但我得到一个类转换异常:
03-11 22:47:31.848: E/AndroidRuntime(26357): java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.ViewGroup
有什么想法吗?
【问题讨论】:
【参考方案1】:如果您在以下行收到 classcastexception:
ViewGroup vg = (ViewGroup)findViewById(android.R.id.content).getRootView();
然后我建议你在布局的根视图中放置一个 id,然后直接使用 findViewById() 对其进行膨胀,然后使用 removeView 方法。
【讨论】:
【参考方案2】:终于解决了。好像我的View
被添加到了根目录下的RelativeLayout
。要获得 RelativeLayout
句柄,我必须这样做:
ViewGroup vg = (ViewGroup)findViewById(R.id.board_root_view).getRootView();
RelativeLayout v = (RelativeLayout)mOverflowListView.getParent();
vg.removeView(v);
【讨论】:
以上是关于如何从 Activity RootView 中删除视图的主要内容,如果未能解决你的问题,请参考以下文章
更改 RootView 控制器 Xamarin IOS 应用程序
如何在 iOS 中从 webview 返回到 rootview?