【问题标题】:How to remove View from Activity RootView如何从 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

有什么想法吗?

【问题讨论】:

    标签: android layout view viewgroup rootview


    【解决方案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);       
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 2012-05-04
        • 2018-12-17
        相关资源
        最近更新 更多