【问题标题】:How to remove tab from TabHost如何从 TabHost 中删除选项卡
【发布时间】:2011-03-19 00:13:37
【问题描述】:

TabHost 小部件中,我可以使用TabHost.addTab(TabHost.TabSpec tabSpec) 创建一个带有其内容(意图)的新标签。

我们可以通过调用clearAllTabs() 删除我们创建的所有选项卡,但我不知道如何删除选项卡或只是将选项卡内的内容(Intent)替换为新的 Intent。

所以我需要像removeTab(int index)这样的东西

【问题讨论】:

    标签: android android-widget


    【解决方案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 子类化以添加您需要的行为。也许有一种更简单的方法,但这是我能想到的唯一方法。 祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      相关资源
      最近更新 更多