只是澄清一下。我有一个TabHost,里面有5个选项卡。我在玩tabhost,所以我试图关闭其中一个选项卡(即一个子视图)。问题是,即使它有效,选项卡下方的布局也保持不变,即,如果我要关闭的选项卡中有一个文本视图,而主选项卡中有按钮,当我用文本视图关闭选项卡时,选项卡确实会消失,但文本视图会保留。这是我用来关闭选项卡的代码:
int vPos = mHost.getCurrentTab();
TabWidget tWidget = mHost.getTabWidget();
if (vPos != 0) {
tWidget.setCurrentTab(0);
tWidget.removeView(mHost.getTabWidget().getChildAt(vPos));
}
因此,基本上它关闭了选项卡,切换到另一个选项卡,但选项卡下方的布局保持完全相同。我知道人们希望我发布完整的代码,包括布局等等,但这是一件普通的事情,它不考虑布局,只考虑选项卡(如果我错了,请随意指出)。
也许我应该对视图调用invalidate(),但无论是使子视图、选项卡小部件还是选项卡主机无效,这都不起作用。
不幸的是,由于缺少removeTab函数,这是TabWidget内部的一个问题。当您从TabWidget调用removeView时,removeView是从没有选项卡概念的ViewGroup类中调用的。因此,您实际上只是删除了实际的选项卡,而不影响下面的索引和布局。
一个过度的解决方法是调用removeAllViews并重新添加所有视图。