如何从 TabHost 中删除选项卡
Posted
技术标签:
【中文标题】如何从 TabHost 中删除选项卡【英文标题】:How to remove tab from TabHost 【发布时间】:2011-03-19 00:13:37 【问题描述】:在TabHost 小部件中,我可以使用TabHost.addTab(TabHost.TabSpec tabSpec) 创建一个带有其内容(意图)的新标签。
我们可以通过调用clearAllTabs() 删除我们创建的所有选项卡,但我不知道如何删除选项卡或只是将选项卡内的内容(Intent)替换为新的 Intent。
所以我需要像removeTab(int index)
这样的东西
【问题讨论】:
【参考方案1】:更简单:
tabHost.getTabWidget().removeView(tabHost.getTabWidget().getChildTabViewAt(3));
【讨论】:
这正是我想要的 4. 可以通过标签删除标签或者能够找到标签点击的当前索引位置.. 当前索引:tabHost.getCurrentTab() 我正在使用FragmentTabHost
,当我在删除特定选项卡后进行调试时,它仍然显示在选项卡列表中但不可见,这让我在删除位置按下选项卡时显示我删除了片段数据,这非常奇怪!【参考方案2】:
实际上,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
子类化以添加您需要的行为。也许有一种更简单的方法,但这是我能想到的唯一方法。
祝你好运
【讨论】:
以上是关于如何从 TabHost 中删除选项卡的主要内容,如果未能解决你的问题,请参考以下文章