如何从活动RootView中删除视图

时间:2013-03-11 21:53:02

标签: android layout view viewgroup rootview

我正在尝试删除夸大的视图。这就是我给视图充气的方式:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果您在以下行获得classcastexception:

  ViewGroup vg = (ViewGroup)findViewById(android.R.id.content).getRootView();

然后我建议您在布局的根视图中放置一个id,然后直接使用findViewById()对其进行充气,然后使用removeView方法。

答案 1 :(得分:0)

终于解决了。我的View似乎已添加到根目录下的RelativeLayout。要获得RelativeLayout句柄,我必须这样做:

ViewGroup vg = (ViewGroup)findViewById(R.id.board_root_view).getRootView();     
RelativeLayout v = (RelativeLayout)mOverflowListView.getParent();
vg.removeView(v);