1

我正在開發一個應用程序,我使用TabHost。在我的TabHost中,有四個選項卡。每個選項卡都有自己的ActivityGroup。現在,我想要的是,在我的一個ActivityGroup內的Acitivty下,我想要暫時刪除Tabwidget,以便frameLayout可以在設備的整個屏幕中看到。然後,當活動切換到另一個活動時,Tabwidget將重新出現在屏幕上。所以第一個問題是,我可以這樣做嗎?如果那樣,我該怎麼做?如果不可行,那麼是否有可能在Tabwidget的選項卡下的ActivityGroup內正常活動和活動之間切換?如何臨時刪除TabHost Tabwidget?

回答

1

StartActivity()作品裏面ActivityGroup也。 所以活動將在整個屏幕中開始,finish();將發送回ActivityGroup()

+0

非常感謝,瞭解我該怎麼做我想做的事情..... !!! – Junaid

0

由於TabWigetView的子類,因此您應該可以使用setVisibility()來隱藏/重新顯示它。

您需要一個對TabWidget的引用 - 這個引用需要的地方取決於哪個類將處理hide/show。在我的例子下面我將假定你把功能在你TabActivity - 所以我們添加兩種方法,併爲TabWidget參考:

TabWidget myTabWidget; //You will need to find it in the layout in onCreate using findViewById(R.id.idOfYourTabWidget). 

public void hideTabs() { 
    myTabWidget.setVisibility(View.GONE); 
} 

public void showTabs() { 
    myTabWidget.setVisibility(View.VISIBLE); 
} 

然後在需要隱藏,你需要做的選項卡中的Activity例如:

Activity activity = getParent(); //Might be getParent().getParent(); if you're inside an ActivityGroup. 
if(activity instanceof MyTabActivity) //Just to make sure. 
    ((MyTabActivity) activity).hideTabs(); 

並重新顯示選項卡,同樣的事情,但調用((MyTabActivity) activity).showTabs();來代替。

+0

唉,我問這個問題之前做過類似的東西。但問題是,雖然Tabwidget變得不可見,但Tabwidget的空間仍然是空白的,FrameLayout不覆蓋整個屏幕。我想要什麼,當Tabwidget將被暫時刪除時,FrameLayout將會顯示在整個屏幕上。 – Junaid

1

對於底部標籤:

public void hideTab() 
{ 
    TabWidget tabwidget=getTabWidget(); 
    RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams)tabwidget.getLayoutParams(); 
    params.setMargins(0, 0, 0, -100); 

} 
public void showTab() 
{ 
    TabWidget tabwidget=getTabWidget(); 
    RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams)tabwidget.getLayoutParams(); 
    params.setMargins(0, 0, 0, -3); 

}