tabHost中的Android Closing选项卡

时间:2013-12-21 12:57:38

标签: java android tabs android-tabhost tabwidget

我正在使用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;
}

2 个答案:

答案 0 :(得分:0)

你有没有试过这样的代码:

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

我在这个问题上看到了这个问题:Close tab programmatically TabHost

希望你能得到预期的结果。

答案 1 :(得分:0)

要关闭标签,我做了以下技巧&最后它有效。

第一,我设置了一个默认选项卡&在本地维护所有新选项卡的列表。

//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);

然后从本地列表中选择最后一个标签&amp;使用以下代码切换到该选项卡

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

最后一步不是强制性的,但有时我没有正确查看tabHost视图,如果不切换到另一个标签页。如果所有选项卡都已关闭,请切换到默认选项卡。

我希望它对你们也有用。

如果有人找到更好的方法,请告诉我们。

谢谢。