【问题标题】:Reasons to use ActionBarSherlock on API11+在 API11+ 上使用 ActionBarSherlock 的原因
【发布时间】:2014-02-05 04:24:22
【问题描述】:

我计划在我的应用中支持 Android 2.2+,为了让它看起来像 Holo,我加入了 ActionBarSherlock,但现在我必须将限制提高到 3.0,因为一些方法(例如 PreferenceFragment)在较低的 API 中不可用(而且我不想为 2.2 重写所有这些方法)。 与 API 11+ 上的普通 ActionBar(Compat) 相比,ActionBarSherlock 有优势吗?我应该删除该库以减小应用程序的大小,还是有理由保留它?

【问题讨论】:

    标签: android actionbarsherlock


    【解决方案1】:

    因为一些方法(例如 PreferenceFragment)在较低的 API 中不可用(我不想为 2.2 重写所有这些方法)

    有很多方法可以解决这个问题,同时保持向后兼容性。正如我在this sample project 中演示的那样,不仅其他人对此进行了反向移植(IIRC),而且通过几行代码您可以支持较旧的 Android 版本。

    请注意,我并不是说你不应该提高你的android:minSdkVersion,只是这个具体原因并不是一个特别好的理由。如果您的理由是“哎呀,支持数量不断减少的设备真的值得吗?”,那是完全合理的,尤其是对于新应用。

    ActionBarSherlock 在 API 11+ 上比普通的 ActionBar(Compat) 有优势吗?

    首先,AppCompat 操作栏不会改变您的偏好问题。

    其次,由于there are approximately zero devices running API Levels 11 through 14,如果您要提高android:minSdkVersion,请转到15。在该级别,此时操作栏反向移植不会真正为您添加任何内容。

    但是,如果您确实决定支持 API 级别 11 作为您的最低要求,那么在 API 级别 14 中的ActionBar 中添加了一些内容,ActionBarSherlock 提供了(可能还有 AppCompat,不过我没有检查),这将在本机操作栏中不可用。

    【讨论】:

    • 感谢您提供的信息。我知道在 pre-API 11 中有 Preferences,但这些方法已被弃用,我不想支持已弃用的方法。我不知道运行 Honeycomb 的设备很少(在我看来,这是一款出色而时尚的操作系统)。您知道 API 14 中究竟实现了哪些方法,而 API 11 中没有实现吗?我目前使用 v13 兼容库,因为 v4 和 v7 在 SectionsPagerAdapter 中有一个错误。
    • @Lesik2008:“但是这些方法已被弃用,我不想支持已弃用的方法”——Google 将方法和类标记为已弃用,只要它们提出了他们更喜欢的东西。当 Android 4.5 发布时,您当前的某些代码可能会被弃用。在运行 API 级别的设备上使用不推荐使用的方法其中不推荐使用的方法是正确答案,这对于支持较旧的设备通常是必要的,因为“较旧”的定义范围很广。
    • @Lesik2008:“你知道哪些方法在 API 14 中实现了,而在 API 11 中没有实现吗?” -- 该信息在ActionBar 类的JavaDocs 中。 “我目前使用 v13 兼容库,因为 v4 和 v7 在 SectionsPagerAdapter 中有一个错误”——Android SDK 中没有 SectionsPagerAdapter
    • 对不起,我的意思是FragmentPagerAdapter,我是德国人,我不记得正确的术语了。
    • 如果有人在此线程上经过:setHomeButtonEnabled 和 getThemedContext 等选项在 API 11 中不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2011-07-07
    • 2013-12-09
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多