2010-07-21 3 views
14

В виджне TabHost я могу создать новую вкладку с ее содержимым (намерение), используя TabHost.addTab(TabHost.TabSpec tabSpec).Как удалить вкладку TabHost

Мы можем удалить все вкладки, которые мы создали, позвонив по номеру clearAllTabs(), но я не могу понять, как удалить вкладку или просто заменить содержимое (намерение) внутри вкладки новым намерением.

так, что мне нужно что-то вроде removeTab(int index)

ответ

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)

Зная это, я бы рекомендовал подкласс TabWidget и TabHost, чтобы добавить поведение вам нужно , Может быть, есть более простой способ, но это единственный, о котором я могу думать. Успехов

23

гораздо проще:

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

Это именно то, что я искал вкладку 4. –

+0

может быть удалить его тег или в состоянии найти текущую позицию индекса вкладки нажмите .. –

+0

текущего индекса: tabHost.getCurrentTab() – 2red13

Смежные вопросы