如何在任意位置而不是最后一个位置插入制表符?
How can I insert a tab at an arbitrary position instead of the last?
我可以使用 addTab()
方法将新选项卡添加到 TabHost
。但这将始终将选项卡添加为最后一个选项卡。如何在 TabHost
中最后一个位置以外的其他位置添加选项卡?例如,如何将新标签插入第一个标签或其他任意位置?
我不想使用 XML 但一切都应该以编程方式完成。
我想到的一个解决方案是首先通过在 TabHost
上调用 clearAllTabs()
来删除所有选项卡,然后按照我想要的顺序重新添加所有选项卡。但这当然是一个非常骇人听闻的解决方案。没有更好的吗?
显然没有。如果您查看 TabHost
源代码,向 mTabSpecs
添加内容的唯一方法是通过 addTab
方法。扩展 class 也无济于事,因为列表是 private
.
所以,正如您所说,使用 clearAllTabs()
是最少的 'hacky' 方法。我认为用例本身很重要,所以我可以理解为什么实现行为不是那么简单。但我不会将其称为 "very hacky" 解决方案。没有进行 java 反射,它只是使视图容器无效并向其添加新的视图列表。它不会影响性能,也不会影响内存,也不会影响可读性,如果 SDK 更新或类似的东西,它也不会中断。所以我很确定它完全没问题。
我可以使用 addTab()
方法将新选项卡添加到 TabHost
。但这将始终将选项卡添加为最后一个选项卡。如何在 TabHost
中最后一个位置以外的其他位置添加选项卡?例如,如何将新标签插入第一个标签或其他任意位置?
我不想使用 XML 但一切都应该以编程方式完成。
我想到的一个解决方案是首先通过在 TabHost
上调用 clearAllTabs()
来删除所有选项卡,然后按照我想要的顺序重新添加所有选项卡。但这当然是一个非常骇人听闻的解决方案。没有更好的吗?
显然没有。如果您查看 TabHost
源代码,向 mTabSpecs
添加内容的唯一方法是通过 addTab
方法。扩展 class 也无济于事,因为列表是 private
.
所以,正如您所说,使用 clearAllTabs()
是最少的 'hacky' 方法。我认为用例本身很重要,所以我可以理解为什么实现行为不是那么简单。但我不会将其称为 "very hacky" 解决方案。没有进行 java 反射,它只是使视图容器无效并向其添加新的视图列表。它不会影响性能,也不会影响内存,也不会影响可读性,如果 SDK 更新或类似的东西,它也不会中断。所以我很确定它完全没问题。