实施行动栏:ABSherlock还是ABCompat?

时间:2013-07-31 11:08:17

标签: android actionbarsherlock android-actionbar android-actionbar-compat

该应用程序目前有制表和bar 自定义(由前一个人)从片段复制cat Apple设计。

我想转向Android操作栏,以提供Android体验和常规行为。

我应该实施Action Bar Sherlock还是Action Bar Compat?

Pro ABS:

  • 大量文档
  • 操作栏选项卡众所周知(这就是我需要做的事情)
  • 关于Holo主题? ABS非常适合支持它,如何执行ABCompat?

Pro ABCompat:

  • Google支持(从长远来看更好?)
  • 与导航抽屉更好地连接(但我不会使用导航抽屉)
  • Java Build path中没有外部依赖项

其他论据有何决定? 我应该选哪一个?

从我的角度来看,如果我成功地使用固定标签执行操作栏,则操作栏兼容性是最佳选择(但不是很多)。

谢谢你的帮助! (甚至提供我错过的论据)

3 个答案:

答案 0 :(得分:7)

让我切换到ActionBarCompat的主要原因是具有android< = 2.3的设备中的菜单外观。使用ActionBarSherlock,菜单显得非常难看,使用设备的默认菜单。使用ActionBarCompat时,菜单显示方式与在Android> = 4.0和硬件菜单键的设备中打开时的显示方式相同。

但是,请注意ActionBarCompat还有一些问题需要解决。我正在处理这个错误:

SearchView taking all the space in the new ActionBarCompat

更新:

另一个错误:

https://code.google.com/p/android/issues/detail?id=58321&thanks=58321&ts=1375277660

更新:

我已经创建了ActionBarCompat的修补版本来解决ActionMode的问题。见这里:

The ActionMode is being created twice with the ActionBarCompat r18

答案 1 :(得分:6)

我将我的应用程序从ABS迁移到Action Bar Compat的原因如下:

  1. 我只有一个非常基本的操作栏标签实现,我可以看到它很容易迁移

  2. 我更喜欢Google文档 - 它更清晰,更完整

  3. 软件维护将更简单,更不容易出错,因为我现在没有外部依赖项。

  4. 我遇到了ABS的问题,我想要处理一个方向更改(但你不能因为ABS挂钩到Android的方式)。

  5. 我没有看到任何与ABS有关的人就ABS的长期计划发表任何声明。所以我不相信他们会继续支持它。我可能错了 - 但我没有看到任何东西。

  6. 性能对我来说不是一个问题,但我不明白为什么Google的“原生”实现会比ABS运行得慢,我怀疑它可能会表现得更好。

  7. 这些只是我个人的印象。

答案 2 :(得分:1)

我认为ActionBarSherlock是一项出色的工作,也是Android开发人员的一项出色服务。 (顺便说一下,我没有Jake Wharton的开发者股票。)谷歌已经通过在v7中以基本相同的方式包含基本相同的东西(据我所知)来支付它最好的赞美支持图书馆。

但是现在官方支持该功能,一些标准参数适用于哪个选择。

ActionBarSherlock是第三方依赖项,代表持续支持方面的风险。除非它确实需要一些不是由ActionBarCompat完成的,或者后者有一个你无法解决或等待修复的错误,所以很少有人赞成坚持使用前者。

我最近从ActionBarSherlock迁移到ActionBarCompat,发现只有一两个小问题,主要问题是需要对用于操作栏选项卡指示器背景的库存9补丁图像进行微调,以便生成早期Android版本上的标准选项卡行为,在我的情况下2.2 == API级别8 == Froyo。 (具体来说,我调整了垂直可伸展区域,使它们不与图像底部的顶边或彩色指示条相邻。)