2013-12-21 79 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视图,如果不切换到另一个选项卡。如果所有选项卡都关闭,则切换到默认选项卡。

我希望它也许对你们有用。

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

谢谢。