【发布时间】:2011-03-19 00:13:37
【问题描述】:
在TabHost 小部件中,我可以使用TabHost.addTab(TabHost.TabSpec tabSpec) 创建一个带有其内容(意图)的新标签。
我们可以通过调用clearAllTabs() 删除我们创建的所有选项卡,但我不知道如何删除选项卡或只是将选项卡内的内容(Intent)替换为新的 Intent。
所以我需要像removeTab(int index)这样的东西
【问题讨论】:
在TabHost 小部件中,我可以使用TabHost.addTab(TabHost.TabSpec tabSpec) 创建一个带有其内容(意图)的新标签。
我们可以通过调用clearAllTabs() 删除我们创建的所有选项卡,但我不知道如何删除选项卡或只是将选项卡内的内容(Intent)替换为新的 Intent。
所以我需要像removeTab(int index)这样的东西
【问题讨论】:
更简单:
tabHost.getTabWidget().removeView(tabHost.getTabWidget().getChildTabViewAt(3));
【讨论】:
FragmentTabHost,当我在删除特定选项卡后进行调试时,它仍然显示在选项卡列表中但不可见,这让我在删除位置按下选项卡时显示我删除了片段数据,这非常奇怪!
实际上,clearAllTabs 就是这样做的:
public void clearAllTabs() {
mTabWidget.removeAllViews();
initTabHost();
mTabContent.removeAllViews();
mTabSpecs.clear();
requestLayout();
invalidate();
}
removeAllViews 方法来自ViewGroup 类。幸运的是,ViewGroup 确实有方法可以只删除一个视图:
removeView(View view)removeViewAt(int index)removeViewInLayout(View view)知道了这一点,我建议将TabWidget 和TabHost 子类化以添加您需要的行为。也许有一种更简单的方法,但这是我能想到的唯一方法。
祝你好运
【讨论】: