如何从 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)

知道了这一点,我建议将TabWidgetTabHost 子类化以添加您需要的行为。也许有一种更简单的方法,但这是我能想到的唯一方法。 祝你好运

【讨论】:

以上是关于如何从 TabHost 中删除选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 TabHost 中的选项卡图像

转载《Android-TabHost 选项卡功能用法详解》

选项卡介绍

Android学习笔记(30):选项卡TabHost

在 TabHost 中重新加载选项卡内容

在 Android 的 TabHost 中隐藏选项卡