【问题标题】:Action Bar in API Level > 3.0 but Still Support API < 3.0API 级别 > 3.0 但仍支持 API < 3.0 的操作栏
【发布时间】:2012-08-06 15:19:59
【问题描述】:

又一个兼容性问题。

问题

我需要在 api 级别 3.0 及更高版本中使用 tabbed action barfragments 之间切换。但是,我还需要能够在 api 级别 fragments 之间切换。

工作中的扳手是我已经下载了一个自定义兼容性库,它允许我使用google mapsfragments,因此我不能使用库。

问题

如何在 3.0 及更高版本中实施选项卡式 ActionBar 解决方案,同时满足 3.0 及更低版本的更大市场?

任何帮助都会很重要。

【问题讨论】:

    标签: android android-fragments android-actionbar android-maps android-compatibility


    【解决方案1】:

    你想要的是ActionBarSherlock。它使用 API >= 3 的本机操作栏,并为 API 级别 2.x 提供向后兼容性。还有 Action Bar Compatibility 示例项目(我相信列为 SupportAppNavigation)。我认为这本质上是一样的。

    【讨论】:

    • 如果不取消对地图片段的支持,我就无法实现这一点?
    • @DiscoS2 - 要在 3.0 之前提供片段支持,您需要使用兼容性库。 ActionBarSherlock 是兼容性库的扩展,所以我不明白您为什么需要废弃地图片段支持。你能再解释一下你的担忧吗?
    • 要实现谷歌地图和片段功能,我必须已经使用兼容性库的扩展,所以我担心我不能同时使用原始库的两个扩展?
    • @DiscoS2 - ActionBarSherlock 不替换兼容性库;它建立在它之上。我想谷歌地图扩展的工作方式相同。如果是这样,那么它们不太可能(尽管可能,我想)会相互干扰。
    • 好的,谢谢泰德。我想我会试一试的。虽然有点破解,对吗?我只是希望兼容性库完全完整,并无缝支持不同的 API 级别!
    【解决方案2】:

    所以我不久前设法想出了一个解决方案,只是花了我一段时间才在这里发布。

    这是适合我的解决方案。我需要使用 ActionBar,但我还需要使用 MapActivity 和 FragmentActivity,因此无法使用 ActionBarSherlock。

    我做了以下事情:

    • 创建了一个名为 CCActionBar 的片段,它通过将自身添加为侦听器来处理 CCTab 的触摸(解释如下)。它还扩展了一个名为 action barlayout 的布局,其中排列了选项卡和图像,只需在运行时引用选项卡。

    • 创建了一个名为 CCTab 的自定义视图,它表示操作栏的选项卡。当它被触摸时,它告诉它的侦听器(CCActionBar)它被触摸了。

    • 在我的主布局 xml 文件中有一个操作栏容器,我根据 API 级别在运行时显示或隐藏它。

    • 现在,在我的 OnCreate 方法的主要活动中,我检查我的 API 级别是否大于 3.0。如果是我只是实现标准的 ActionBar 确保我的自定义操作栏容器是不可见的。如果不是,我设置我的自定义操作栏并确保我的 xml 布局中的操作栏容器可见。

      • 然后,我确保在使用任一方法时按下选项卡时,它的处理方式相同,因此一旦设置完成,您就不必以任何不同的方式处理它。

    我希望这对某个地方的人有所帮助,或者至少让您知道如何继续。

    【讨论】:

      【解决方案3】:

      我建议使用ActionBarSherlock 来获取选项卡式操作栏功能。

      我假设您还需要Fragment 中的MapView 支持。为此,我会推荐来自MapView in a Fragment (Honeycomb) 的解决方案 (查看 user1414726 答案和示例代码)。

      我认为这是一个比使用库更好的解决方案,尽管它使用了已弃用的LocalActivityManger。但在我看来,这比使用每个Activity 都是MapViewActivity 的子类的库更好,我假设你正在使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2012-04-21
        • 1970-01-01
        相关资源
        最近更新 更多