使用支持库(ActionBarSherlock)在Android 4中嵌套选项卡

时间:2012-08-06 12:00:37

标签: android tabs actionbarsherlock viewpagerindicator

我遇到了严重的问题,让三层嵌套标签在Android 2.1上运行,看起来像Android 4(使用支持库片段)。

目标

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

问题

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

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

1 个答案:

答案 0 :(得分:3)

PagerAdapter不需要Fragments作为孩子。您可以在那里充气/管理自己的自定义视图。所以你可以继续使用嵌套的TabActivities。或者,您可以将Fragments置于顶层,并在底层Views管理您自己的ViewPager

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

另一种选择是在不使用TabHost的情况下使用TabActivity。你甚至可以将它与Fragments一起使用。请参阅示例here

另请注意:如果您正在寻找Google Play风格的ViewPagerIndicator,那么现在已经包含在支持包中:PagerTitleStrip

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

那就是说,

我必须说这听起来像一个糟糕的UI模式。更糟糕的是,我们在一个Activity中讨论了很多夸大的观点。您可能会遇到内存问题,具体取决于显示的内容。如果您将ViewStubs放在最底层,我建议大量使用ViewPager并进行回收。

继续尝试推动客户端使用ActionBar 微调模式作为顶级(主要3个标签),甚至考虑花哨的滑动抽屉模式。也许平滑的动画足以影响他们的意见。

将他们推荐到官方设计网站,并展示流行导航模式的示例,例如Gmail,YouTube,Google +,Evernote等中的导航模式。我最近处理的客户请求您描述的完全相同的模式,之后几周的推动能够让他们相信,超过2层的标签是不可接受的

您还可以向他们展示我的羞耻墙 Google+信息页,突出显示热门Android应用中使用的不良设计模式:Android UI Anti-Patterns。 : - )