【问题标题】:Android Swipe View with Tabs Without Using the V4 support libraryAndroid Swipe View with Tabs without using the V4 support library
【发布时间】:2013-10-22 16:54:16
【问题描述】:

我之前多次创建了一个带有标签的滑动视图described in the android documentation。事实上,单步执行 Eclipse 项目向导几乎可以让您使用 ViewPager 获得基本的用户界面。

我的问题是这样的:

我正在构建的应用程序仅支持 Android 4.0(API 级别 14)。所以,我正在考虑完全放弃支持包。但是,我似乎找不到不使用 ViewPager(仅在支持包中可用)的带有选项卡的滑动视图示例。

是否有相当于 ViewPager 的 api 级别 14&>,有人可以给我一个工作示例,说明如何在不使用支持库的情况下实现带有选项卡界面的滑动视图。

否则,有人可以提出一个很好的论据,说明为什么我什至不应该打扰,使用支持包并快乐。

编辑: 我正在寻找的是有关支持库特定功能(例如 ViewPager)的权威答案。这些功能最终会合并到核心 API 中吗?或者我们是否会继续为这些类型的功能提供支持包?请具体说明 API 版本和时间表。

Edit-1/15:我正在更新这个问题,以停止我得到的“我也是”的答案。在最初发布此问题时,Android 开发人员文档对支持库的用途更加模糊,因为它们与核心 SDK 中未包含的功能相关。他们已经更新了他们的文档以澄清事情:

Android 支持库包是一组代码库,提供向后兼容的 Android 框架 API 版本以及只能通过库 API 获得的功能。

这无疑使事情变得更清楚了,并通知开发人员不要期望像 ViewPager 这样的东西会被纳入核心 SDK 功能。我已经接受了与我遇到的问题最相关的答案。这就是如何将支持包功能添加到现有项目而无需显着更改代码库。

【问题讨论】:

  • 我想如果你也想支持底层的api,你应该使用Actionbarsherlock。它可以像ViewPager 一样顺利运行。如果你喜欢看,我会把代码贴出来。
  • @YeLinAung - 我想你误读了我的问题。我实际上并不希望支持较低的 API。只有 14 岁及以上。但是,我会检查 ActionBarSherlock(我一直想做的事情)。谢谢你。 :-)
  • 除了 Android SDK 工程师之一,任何人都无法真正回答您的问题。从兼容性包随时间演变的方式(以及它的当前状态)来看,如果你想要ViewPager 功能,你就会坚持下去。但是,您可以复制它的代码(并修改它以使用当前类)以使您自己的代码保持最新 ViewPager(并放弃支持库)。这当然意味着您需要自己维护该类(基本上是观察兼容性包的任何新版本是否更改了ViewPager 代码)。
  • @Luksprog - 有或至少曾经有一些 Android SDK 工程师在 S.O.所以,这正是我一直在寻找的东西,也是我打开赏金的原因。更多的是出于好奇,因为正在开发的应用程序已经发布(包括支持包和所有)。感谢您的意见。

标签: android android-viewpager android-support-library swipeview


【解决方案1】:

我知道这是一个非常古老的问题,但我认为它仍然具有相关性。 我正在寻找一种解决方法:使用 viewpager 而不必将我所有的整个项目都转换为 v4 支持库。

答案是 v13 支持库!。通过这种方式,您可以在 Activity 上使用 viewpager,然后使用 android.support.v13.app.FragmentStatePagerAdapter 来保持与片段和其他有用内容的兼容性。

希望它可以帮助一些沉迷于谷歌的搜索者。

【讨论】:

    【解决方案2】:

    正如@Luksprog 所提到的,您可以在自己的项目中复制 ViewPager 代码,并用原生代码替换支持库引用。您很可能需要对 FragmentPagerAdapter、FragmentStatePagerAdapter 和 PagerAdapter 执行相同的操作。我从grepcode.com 获取代码。

    虽然我是 android 的初学者,但我花了 2 个小时才完成这个技巧。但这意味着要维护更多的代码行,最后我切换回支持库。

    【讨论】:

      【解决方案3】:

      现在我不是 Android SDK 专家,但我只会使用支持库。这是RenderScript documentation的摘录,

      “我们强烈建议使用支持库 API 来访问 RenderScript,因为它们包含对 RenderScript 计算框架并提供更广泛的设备 兼容性。”

      现在这是针对 v8 支持库的,但我猜这个建议可以外推。最新的改进将在 Android 的支持库中是有道理的,因为它们可以独立于平台更新进行更新。

      请务必在发布前启用ProGuard,这样您就可以修剪 API 未使用部分的多余脂肪。

      【讨论】:

        【解决方案4】:

        您也可以使用ViewFLipper 类,但您必须手动实现动画和手势检测器,您可以找到一些代码here

        【讨论】:

          【解决方案5】:

          您应该使用支持库包,因为它提供了向后兼容的 Android 框架 API 版本。 根据我的经验,使用他们推荐的方法是处理 android 的最佳方式。

          或阅读本文

          http://www.velir.com/blog/index.php/2010/11/17/android-snapping-horizontal-scroll/

          【讨论】:

            【解决方案6】:

            通常鼓励使用支持库,因为它包含每个 API 的最新代码。 B.Young 在 RenderScript 上指出的内容适用于所有其他 API。

            -------- 无需继续阅读。

            让我们举个例子。假设当 Android 8 发布时,他们引入了一个新类来保存引用到称为 FastMap 的键的值。为了增加对旧版本的支持,Google 发布了一个包含这个新类的支持库,两个月后,在性能测试期间,他们找到了一种提高效率的方法,因此他们发布了使用优化版 FastMap 的支持库更新(因为 Android 操作系统被冻结在手机中)。

            此外,由于大量发布总是有点匆忙,Google 意识到他们引入了一个非常具体的错误(是的,它发生了),该错误会在更新的更新中得到修复。

            因此,如果要为 Android 8 及更高版本构建 Android 应用并使用内置 API,您将错过支持代码中的所有这些改进。

            【讨论】:

            • 这个假设的例子是不准确的。我在问题中专门针对的 ViewPager 等功能完全包含在支持库版本中。您似乎暗示支持库版本解决了核心 SDK 中的错误。他们不。另外,我特别提到了应用程序不支持旧版操作系统的情况。
            • 如果您的回复不清楚,我们深表歉意。我了解到您不支持旧版操作系统。即使在这种情况下,使用支持库也是一个更好的主意。谢天谢地,谷歌开发人员在截止日期和时间表方面仍然不是人类,因此错误、不清楚和不高效的代码可能会进入 SDK 版本和文档。它们中的大多数在进一步发布时得到修复或改进,但支持库也是优化的重要部分,请注意,支持库代码通常是最新的实现。
            • 您再次暗示支持库版本解决了核心 SDK 版本中问题的错误修复。事实并非如此。 ViewPager 等功能完全包含在支持包版本中。因此,如果您不支持较旧的操作系统版本并且不打算使用这些附加功能,则没有理由使用支持库。
            • 并不是说支持包显然就是为了这个,但是你可以在那里找到类似的改进。你对你的回答非常肯定。可能您不是在寻找答案或意见,但这就是 StackOverflow 的用途。
            猜你喜欢
            • 1970-01-01
            • 2022-11-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-22
            • 2022-12-01
            • 2022-12-26
            • 1970-01-01
            相关资源
            最近更新 更多