2013-12-21 107 views
0

我正在開發使用android的聊天應用程序。按編程方式,現在我可以根據需要添加任何選項卡。但問題是我無法關閉一個標籤。 tabhost.clearAllTabs關閉所有選項卡。當另一個用戶離開聊天窗口時,我想關閉特定的選項卡。 是否有可能使用tabhost?雖然沒有直接關閉標籤的方法,但有什麼間接方法可以關閉標籤?安卓關閉選項卡在選項卡主機

謝謝。

更新:

TabHost tabHost; 
public class TActivity extends TabActivity { 

    tabHost = getTabHost();     
} 

public void addTAb(){ 

     TabSpec tabSpec = tabHost.newTabSpec("counter:"+counter);  

     View tab = LayoutInflater.from(getTabHost().getContext()).inflate(R.layout.tab, null);    
     tabSpec.setIndicator(tab);   
     Intent tabIntent = new Intent(this, Foo.class); 
     tabSpec.setContent(tabIntent); 

     tabHost.addTab(tabSpec);   

     tabHost.setCurrentTabByTag(--); 
     tabCounter = tabCounter +1; 
} 

回答

0

你嘗試這樣的事情代碼:

myTabhost.getTabWidget() 
    .removeView(myTabhost.getTabWidget() 
    .getChildTabViewAt(myTab)); // myTab is the one you want to close 

我看到這個關於這個問題:Close tab programmatically TabHost

希望你們預期的結果。

+0

朋友,它不工作。我應該在哪裏粘貼這個代碼,在'tabActivity'或'Intent activity'中。另外我使用自定義tabwidget。我在那裏放了'關閉按鈕'的小圖像視圖。當有人點擊這個視圖時,是否可以關閉標籤? &如何區分這個'關閉按鈕'爲每個選項卡綁定? – userx

+0

我想你應該把它粘貼在TabActivity中。是的,我認爲你可以使用「OnClickListener」方法。但是你可以發佈'TabActivity'類,你必須找到一個合適的解決方案嗎? – Fllo

+0

真的非常感謝您的關注。現在我的問題解決了。其實我很忙,所以我沒有把解決方案放在這裏。很快我會在這裏發佈。 – userx

0

要關閉標籤,我做了下面的技巧&終於有效。

1st我設置了一個默認選項卡&本地維護所有新選項卡的列表。

//local list 
private LinkedList<String> tabList = new LinkedList<String>(); 
//adding tab 
TabSpec tabSpec = tabHost.newTabSpec(tab_id); 
tabHost.addTab(tabSpec); 
//making local entry 
tabsList.add(tab_id); 

然後使用下面的代碼我刪除特定選項卡,

tabHost.getTabWidget().getChildTabViewAt(tabHost.getCurrentTab()).setVisibility(View.GONE); 

然後用下面的代碼&開關挑選最後一個標籤從本地列表到該選項卡,

String tabid = tabList.getLast();  
tabHost.setCurrentTabByTag(tabid); 

最後一步是不強制性的,但有時我沒有得到正確的tabHost視圖,如果不切換到另一個選項卡。如果所有選項卡都關閉,則切換到默認選項卡。

我希望它也許對你們有用。

如果有人找到更好的方法,請告訴我們。

謝謝。