如何从TabHost中删除选项卡

14
TabHost 组件中,我可以使用 TabHost.addTab(TabHost.TabSpec tabSpec) 创建带有内容(即Intent)的新选项卡。
我们可以通过调用 clearAllTabs() 来删除创建的所有选项卡,但我不知道如何删除选项卡或仅替换选项卡内部的内容(即Intent)为新的Intent。
因此,我需要类似于 removeTab(int index) 的功能。
2个回答

25

更容易:

 tabHost.getTabWidget().removeView(tabHost.getTabWidget().getChildTabViewAt(3));

这正是我正在寻找的。 - Serdar Samancıoğlu
可以通过标签删除选项卡,或者找到当前选项卡的索引位置。 - kamal_tech_view
当前索引:tabHost.getCurrentTab() - 2red13
1
我正在使用FragmentTabHost,在调试时删除特定选项卡后,它仍然显示在选项卡列表中但不可见,这使得当我按下已删除位置的选项卡时,显示已删除的片段数据,这非常奇怪!! - Jimit Patel

13

实际上,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类,添加您所需的行为。也许有更简单的方法,但这是我能想到的唯一方法。 祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接