Contacts应用如何处理平板电脑上的标签?

时间:2012-09-02 01:54:05

标签: android android-fragments android-viewpager

我正在为手机和平板电脑编写应用程序。与联系人应用程序一样,有多个选项卡(在我的情况下为2)。对于手机用户界面,它们由ViewPager管理,每个标签都有一个片段。

但对于平板电脑用户界面,每个标签都是一个活动,而不是一个片段。它们必须是,因为你不能把碎片放在碎片里面。 (右?)

我意识到我可以在标签监听器上调用setContentView(),但每次更改时都不会破坏活动吗?我对此很困惑。

在不破坏手机用户界面的情况下,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

精心设计的标签式用户界面永远不会将“活动”用于标签内容。

你是正确的,你不能在当前的实现中嵌套Fragments,但这并不意味着你唯一的选择是活动。标签应始终充当视图切换;制表符开关永远不会创建导航历史记录,制表符导航应始终在同一个活动中发生。

请记住,活动和碎片只是MVC观点的控制器。它们用于响应生命周期事件并管理应用程序的元素以响应这些事件,包括UI中的视图。 UI的内容完全由当前窗口的视图层次结构决定,您可以以对应用程序有意义的任何方式操纵视图层次结构。 (虽然最好仍遵循设计指南!)

由于Fragments具有用于管理视图子层次结构的内置机制,因此它们通常是分析UI的自然选择,但它们不是唯一的方法。 ViewPager PagerAdapters可以通过从资源系统中扩展视图子层次结构,以ListView的方式回收视图,或者您可以提出的任何其他机制来操纵视图子层次结构,如果不需要它们提供生命周期事件,则根本不使用片段。不同的布局资源可以包括或排除基于屏幕大小的某些元素,使用不同的资源限定符的不同布局变体。

简而言之,不要忘记Fragments是执行多窗格UI的唯一方法,或者是实现ViewPager每个页面的唯一方法。它们是两者的强大选择,但根据您的Activity的信息架构,您可能会发现自己以不同于其他应用程序的方式使用它们,这没关系。

总的来说,如果您在确定Activity的UI因素时确定逻辑分割点的位置时遇到问题,那么您可能正在为您的应用构建一个整体用户界面,这种用户界面将会像实现一样难以使用。让UI设计指导您的实施。如果每个选项卡自然地切换活动窗口的整个内容,则每个选项卡可能非常适合片段。平板电脑模式下的片段可能会扩展其功能,并使用不同的布局资源在各自的布局中呈现多个窗格。

相关问题