13

我在让三层嵌套选项卡在从 Android 2.1 运行并且看起来像 Android 4(使用支持库片段)的应用程序中工作时遇到了严重问题。

目标

  • 应用程序应该有一个 ActionBar(有效,目前使用 ActionBarSherlock)
  • 主屏幕上的 3 个固定选项卡,即使屏幕足够大,也不会移动到 ActionBar。这些选项卡中的第二个包含...
  • 用户第一次登录时从服务器加载的大约 4 个选项卡。其中每一个都包含
  • 用户第一次登录时从服务器加载的大约 10 个可滑动标签(例如在 Play 商店中)。我的想法是使用 ViewPagerIndicator,因为该库是由 ActionBarSherlock 的同一个人编写的,这应该将问题降到最低。但我对这里的想法持开放态度)。这些可滑动的选项卡中的每一个都包含当前是片段的内容,但可以更改。

问题

当这是一个 Android 2 应用程序时,它只是使用嵌套的 TabActivities,但这些不适用于所有 Android 4 的东西。我可能不明白该怎么做,尤其是“你不能嵌套碎片”的限制让我很头疼。此外,似乎每个活动只能使用一个 FragmentManager,所以我在第二行选项卡中的每个选项卡中都有一个的想法不起作用(除了第一个选项卡之外的所有选项卡都保持为空)。如何以正确的方式做到这一点?

(请理解“使用不同的 GUI 设计”不是一个选项,因为这是客户要求的,他不会重新考虑)

4

1 回答 1

3

PagerAdapter不需要Fragments作为孩子。您可以在其中膨胀/管理自己的自定义视图。所以你可以继续使用嵌套TabActivities。或者,你可以放在Fragments顶层,Views在底层管理你自己的ViewPager

理论上,ViewFlipper如果您想将 Fragments 保留在ViewPager. 您必须自己编写LinearLayout标签Buttons,但这很容易。如果您正在寻找 Holo 外观,只需将样式设置为 ABS 中的样式即可。

另一种选择是TabHost不使用TabActivity. 您甚至可以将它与 Fragments 一起使用。请参阅此处的示例。

另请注意:如果您正在寻找 Google Play 风格的 ViewPagerIndicator,现在包含在 Support 包中:PagerTitleStrip

我想你最好的选择是使用 Fragments 作为顶层,因为这将有助于内存消耗。

也就是说,

我必须说这听起来像是一个糟糕的 UI 模式。更糟糕的是,我们正在谈论很多夸大的观点Activity。您可能会在此处遇到内存问题,具体取决于显示的内容。ViewStubs如果你把它ViewPager放在底部,我建议大量使用和回收。

继续尝试推动客户端将 ActionBar微调器模式用于顶级(主要 3 个选项卡),甚至考虑使用花哨的滑动抽屉模式。也许流畅的动画足以影响他们的意见。

将他们推荐给官方设计网站,并展示流行导航模式的示例,例如在 Gmail、YouTube、Google+、Evernote 等中发现的那些。我最近处理了一个客户,要求与您描述的模式完全相同,并且经过数周的推送能够说服他们超过 2 层标签是不可接受的。

您还可以向他们展示我的 Google+ 耻辱墙页面,突出显示流行的 Android 应用程序中使用的不良设计模式:Android UI 反模式。:-)

于 2012-09-23T17:23:55.083 回答