2010-07-21 11 views
14

In un widget TabHost, posso creare una nuova scheda con il suo contenuto (Intento) utilizzando TabHost.addTab(TabHost.TabSpec tabSpec).Come rimuovere la scheda da TabHost

Siamo in grado di rimuovere tutte le schede che abbiamo creato chiamando clearAllTabs(), ma non riesco a capire come rimuovere la scheda o semplicemente sostituire il contenuto (Intento) all'interno della scheda con il nuovo intento.

così quello che ho bisogno di qualcosa di simile removeTab(int index)

risposta

13

In realtà, clearAllTabs fa che:

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

E i removeAllViews metodo proviene dalla classe ViewGroup. Per fortuna, ViewGroup ha metodi per rimuovere una sola vista:

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

Sapendo che, mi sento di raccomandare a sottoclasse TabWidget e TabHost per aggiungere il comportamento è necessario . Forse c'è un modo più semplice ma questo è l'unico a cui riesco a pensare. Buona fortuna

23

molto più facile:

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

Questo è esattamente quello che stavo cercando scheda 4. –

+0

può essere rimuovere dal suo tag o in grado di trovare la posizione di indice corrente della scheda click .. –

+0

indice corrente: tabHost.getCurrentTab() – 2red13

Problemi correlati