2010-07-21 3 views
14

Dans un widget TabHost, je peux créer un nouvel onglet avec son contenu (Intention) en utilisant TabHost.addTab(TabHost.TabSpec tabSpec).Comment supprimer tab de TabHost

Nous pouvons supprimer tous les onglets que nous avons créés en appelant clearAllTabs(), mais je n'arrive pas à comprendre comment supprimer l'onglet ou simplement remplacer le contenu (Intent) à l'intérieur de l'onglet par une nouvelle intention.

donc ce que je besoin de quelque chose comme removeTab(int index)

Répondre

13

En fait, clearAllTabs est-ce que:

public void clearAllTabs() { 
    mTabWidget.removeAllViews(); 
    initTabHost(); 
    mTabContent.removeAllViews(); 
    mTabSpecs.clear(); 
    requestLayout(); 
    invalidate(); 
} 

Et la méthode removeAllViews vient de la classe ViewGroup. Heureusement, ViewGroup a des méthodes pour supprimer une seule vue:

  • removeView(View view)
  • removeViewAt(int index)
  • removeViewInLayout(View view)

Sachant que, je recommanderais à sous-classe pour ajouter le comportement TabWidget et TabHost dont vous avez besoin . Peut-être y a-t-il un moyen plus facile mais c'est le seul auquel je peux penser. Bonne chance

23

beaucoup plus facile:

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

C'est exactement ce que je recherchais 4. –

+0

peut être supprimer l'onglet par son étiquette ou en mesure de trouver la position d'index actuel Cliquez sur l'onglet .. –

+0

index courant: tabHost.getCurrentTab() – 2red13