xDr*_*onZ 155 java android actionbarsherlock android-actionbar android-actionbar-compat
ActionBarSherlock和Action Bar兼容性有什么区别
几天前谷歌刚刚发布了令我如此困惑的ActionBar兼容性.操作栏兼容性是否与ActionBarSherlock相同,编码是否相同?
LOG*_*TAG 113
ActionBarSherlock与ActionBarCompat:
我只是想在ActionBarSherlock和ActionBarCompat Lib之间放几个代码区别

我们可以将一些应用程序从ActionBarSherlock迁移到ActionBarCompat:
脚步:
导入AppCompat项目.
替换SherlockFragmentActivity为ActionBarActivity.
替换SherlockFragment为Fragment.
变化Menu,MenuItem以及getSupportMenuInflater()引用.修改获取操作视图的方式.
mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
有关详细信息,请参阅此幻灯片+ NickButcher(Google)
感谢来源:http : //gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
不要忘了阅读这个developer.android以获取更多关于ABC的信息!
注意:不幸的是,使用支持库无法以与ABS相同的方式为单元测试进行设置.
输出:
致谢:Gabriele Mariotti
Kur*_*aum 61
ActionBarSherlock为您的应用程序提供了一个操作栏,无论您的应用程序运行的是什么版本的Android API.只有当您运行的设备是API级别3.0或更高级别时,操作栏兼容性才会为您提供操作栏.
*请注意,如果您运行的设备不是3.0或更高版本,ActionBarSherlock将使用它自己的操作栏自定义实现,而不是本机实现.
- 编辑 -
事情似乎发生了变化,ActionBarSherlock与Action Bar兼容性之间实际上没有任何区别.请阅读以下评论以获取详细信息.
- 编辑 -
在使用了两者后,我可以说我实际上更喜欢ActionBarSherlock与Action Bar兼容性.ActionBarSherlock非常简单易用.
--EDIT--如LOG_TAG所述,现在支持Android支持库中的操作栏.我还没有机会使用它,但我想这是最好用的.
Bru*_*eus 41
只是用一个实际的例子来完成@Kurtis Nusbaum.
更新:正如@ rudy-s所说,使用最新的android支持库(api 18),我看到他们已经内置了对actionbar的支持(称为ActionBarCompat类).
我构建了两个简单的应用程序来显示ActionBarSherlock和ActionBar兼容性之间的视觉差异.查看比较图像:


现在按下菜单按钮时的外观:


正如您所看到的,图像只是强制执行所说的内容.只有当您运行的设备是API级别3.0或更高级别时,操作栏兼容性才会为您提供操作栏.而Sherlock更为一般.
您可以在下面看到应用程序源.
菜单xml文件是相同的:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_1"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action1"/>
<item
android:id="@+id/action_2"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action2"/>
<item
android:id="@+id/action_3"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action3"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
兼容性活动:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
Sherlock的活动:
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}
Run Code Online (Sandbox Code Playgroud)
在sherlock app上需要额外的配置:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
更新:正如@ rudy-s所说,使用最新的android支持库(api 18),我看到他们已经内置了对actionbar的支持(称为ActionBarCompat类).
Gle*_*ech 39
Actionbar Sherlock比简单的Actionbar兼容性项目更先进,更雄心勃勃.
如果您只想在应用程序顶部使用操作栏,则可以将操作栏兼容性视为"样本"或良好的起点.
ActionBarSherlock建立在兼容性库的基础上,并为您(如操作栏兼容性示例)提供3.0之前设备上的Action Bar.此外,它还具有ActionBar Compat代码中不存在的额外功能.这包括但不限于
我在使用ActionbarSherlock时遇到的唯一缺点就是你自己锁定了那个库.如果由于某种原因它会在不久的将来消失,你将不得不自己维护它(例如,如果没有Jellybean实现).这是一个麻烦(不是一个大问题),因为你的所有片段都扩展了SherlockFragemnt和你的所有活动.SherlockActivity.
Nec*_*net 26
那么@Jake实现比Actionbar compat更进一步,更精确的是Actionbar Compat只是一个基本的例子,说明如何使用伪动作条为Honeycomb之前的版本支持所有应用程序(API 13).虽然他们的目标是相同的交叉兼容操作栏,但他们有不同的方法.
ActionbarCompat Aproach
这个实现不使用兼容性Android支持库而是创建一个名为ActionBarActivity的基类创建一个Helper的单个实例,这个帮助器充当工厂本身,返回APIS的三个部分的不同实现,它返回
最有趣的部分是ActionbarBaseHelper,因为它有最重要的代码,我建议你理解这个类,你会得到整个例子.
Action Bar Sherlock
嗯,这是一个棘手的第一,因为,我不是作者,也许杰克可以进一步解释这个,但我会试一试.
正如compock Sherlock做出不同的实现,但一个是"Compat",另一个是Native.它强制您从SherlockActivity或SherlockFragmentActivity扩展,因为这两个基类具有调度ActionBar的方法.
这是一个庞大而复杂的项目,无法在一篇文章中解释.建议你挖掘周围的Sherlock Github回购看看,杰夫阿特伍德说

Luf*_*ffy 10
我坚信你应该ActionBarCompat用于所有想要支持旧设备的新项目.
迁移现有项目也可能有意义.请继续阅读,了解为什么要立即迁移或使用ActionBarCompat以及如何迁移现有项目.
为什么你应该比ActionBarSherlock更喜欢ActionBarCompat?
有很多原因可以让你更喜欢ActionbarCompat而不是ActionbarSherlock.
首先,这个项目由谷歌提供,是支持库的一部分,因此可能会支持新的Action Bar相关内容,同时Google会用Android版本发布它们.
另一个很好的理由是它支持Navigation Drawer
pattern开箱即用的权利,而ActionBarSherlock则不支持.因此,如果要将此抽屉添加到现有项目/应用程序,则应进行迁移.
最后也是重要的是,ActionBarSherlock的创建者Jake Wharton在Google+上宣布ActionBarSherlock的进一步开发已经停止.ActionBarSherlock 4.4是最后一个版本,可能会修复错误 - 但不会有任何新功能:因此,如果操作栏中包含新功能,则可能无法通过actionbarsherlock跟上它.
也许我们应该更新答案,因为谷歌自API18以来发布了官方的Actionbar支持?
下面的块来自关于这两个库的官方博客:
如果您使用的是第三方解决方案(例如ActionBarSherlock),则有几个原因需要考虑升级:
- 随着Action Bar API的发展,可以保持更新.
- 综合祖先导航支持.
- 使用框架Menu和MenuItem类.
- 继续使用支持库的Fragment类.
- ActionBarDrawerToggle的集成支持,用于DrawerLayout.
- PopupMenu的Backport.
ActionBarSherlock是一个经过充分测试的可靠库,长期以来为开发人员提供了很好的服务.如果您已经在使用它并且目前不需要上述任何一项,则无需迁移.
| 归档时间: |
|
| 查看次数: |
44014 次 |
| 最近记录: |