Android 如何在任意位置插入制表符而不是最后一个?

Android 如何在任意位置插入制表符而不是最后一个?,android,android-tabhost,Android,Android Tabhost,我可以使用addTab()方法将新选项卡添加到TabHost。但这将始终添加该选项卡作为最后一个选项卡。如何在TabHost中的最后一个位置以外的其他位置添加选项卡?例如,如何将新选项卡插入第一个选项卡或其他任意位置 我不想使用XML,但一切都应该以编程方式完成 我想到的一个解决方案是,首先通过调用TabHost上的clearalltab()删除所有选项卡,然后按照我想要的顺序重新添加所有选项卡。但这当然是一个非常老套的解决方案。没有更好的吗?显然没有。如果查看TabHost源代码,向mTabS

我可以使用
addTab()
方法将新选项卡添加到
TabHost
。但这将始终添加该选项卡作为最后一个选项卡。如何在
TabHost
中的最后一个位置以外的其他位置添加选项卡?例如,如何将新选项卡插入第一个选项卡或其他任意位置

我不想使用XML,但一切都应该以编程方式完成


我想到的一个解决方案是,首先通过调用
TabHost
上的
clearalltab()
删除所有选项卡,然后按照我想要的顺序重新添加所有选项卡。但这当然是一个非常老套的解决方案。没有更好的吗?

显然没有。如果查看
TabHost
源代码,向
mTabSpecs
添加内容的唯一方法是通过
addTab
方法。扩展类也没有帮助,因为列表是私有的


因此,正如您所说,使用
clearAllTabs()
是最不“黑”的方法。我认为用例本身是不平凡的,所以我可以理解为什么实现行为不是那么简单。但我不会称之为“非常老套”的解决方案。没有java反射,它只是使视图容器无效并向其中添加新的视图列表。它不会影响性能、内存和可读性,也不会在SDK更新或诸如此类的情况下中断。所以我很确定它完全没问题。

谢谢,有没有办法从
TabHost
获取单个选项卡视图,或者我必须手动缓存它们?从文档中,我似乎只能使用
getCurrentTabView()
获取当前选项卡视图。我不知道如何从
TabHost
获取非当前选项卡视图,因此我想我必须手动跟踪它们?是的。在
TabHost
中有一个方法
getTabWidget
,它有一个方法
getChildTabViewAt(int index)
。这将返回与给定索引对应的视图。但在使用之前,请确保检查索引是否有效。您可以在这里获得count选项卡:您确定
getChildTabViewAt()
是正确的方法吗?Doc说它返回tabindicator视图,而我在寻找tabcontent视图。我看不到任何方法来获取选项卡内容视图…是的,我确定。查看
TabHost
实现,并了解
getCurrentTabView()
是如何实现的。它的作用如下:
返回mTabWidget.getChildTabViewAt(mCurrentTab)。由于可以通过
getTabWidget()
访问
mTabWidget
,并且该方法是公共的,因此可以通过索引安全地从中获取选项卡视图。