Java ActionBar Sherlock和ActionBar兼容性之间的区别
和的区别是什么 几天前,谷歌刚刚发布了ActionBar兼容性,这让我很困惑。动作栏兼容性是否与动作栏Sherlock的工作原理相同,编码是否相同Java ActionBar Sherlock和ActionBar兼容性之间的区别,java,android,actionbarsherlock,android-actionbar,android-actionbar-compat,Java,Android,Actionbarsherlock,Android Actionbar,Android Actionbar Compat,和的区别是什么 几天前,谷歌刚刚发布了ActionBar兼容性,这让我很困惑。动作栏兼容性是否与动作栏Sherlock的工作原理相同,编码是否相同 示例:操作栏兼容性是否支持或ActionBar.Tab ActionBarSherlock为您的应用程序提供了一个操作栏,无论您的应用程序运行的是哪一版本的android API。操作栏兼容性仅当您运行的设备是API级别3.0或更高版本时,才为您提供操作栏 *请注意,如果您运行的设备不是3.0或更高版本,ActionBarSherlock将使用它自己
示例:操作栏兼容性是否支持或ActionBar.Tab ActionBarSherlock为您的应用程序提供了一个操作栏,无论您的应用程序运行的是哪一版本的android API。操作栏兼容性仅当您运行的设备是API级别3.0或更高版本时,才为您提供操作栏 *请注意,如果您运行的设备不是3.0或更高版本,ActionBarSherlock将使用它自己的操作栏自定义实现,而不是本机实现 --编辑-- 看起来事情已经改变了,ActionBarSherlock和ActionBar的兼容性实际上已经没有区别了。有关详细信息,请阅读下面的评论 --编辑-- 在使用了两者之后,我可以说我实际上更喜欢ActionBarSherlock而不是ActionBar兼容性。ActionBarSherlock非常容易使用 --编辑--
正如LOG_标签所提到的,Android支持库中现在支持操作栏。我还没有机会使用它,但我想这是最好的使用方法。Well@Jake实现比Actionbar Compatit更进一步,更准确地说,Actionbar Compatit只是一个基本示例,说明如何在蜂巢(API 13)之前的版本中使用伪Actionbar支持所有应用程序。虽然他们的目标是相同的跨兼容actionbar,但他们有不同的方法 ActionbarCompat Aproach 这个实现没有使用兼容Android支持库,而是创建了一个基类,名为create a single instance of a This helper act as factory,它返回三段API的不同实现
- :用于蜂窝之前
- :蜂窝式
- :用于ICS基础设备
与简单的Actionbar兼容性项目相比,Actionbar Sherlock要先进得多,雄心勃勃得多 如果你只想在你的应用程序上加一个动作条,那么动作条的兼容性可以被认为是一个“示例”或一个很好的起点 ActionBarSherlock建立在兼容性库的基础上,并在3.0之前的设备上为您提供了一个操作栏(就像操作栏兼容性示例一样)。此外,它还有ActionBar Compat代码中没有的额外功能。这包括但不限于以下功能
- setNavigationMode(用于操作栏中的选项卡和微调器)
- 对话片段
- 上下文操作栏(CAB)接管操作栏的菜单,例如用于多选(http://developer.android.com/design/patterns/new-4-0.html)这是一个ICS特性(!)为此,必须在ActionbarSherlock库中引入ActionMode类(在API级别11中引入)的实现
- Fragment和FragmentActivity实现——因为fragments可以实现onCreateOptions菜单,所以我们需要确保使用SupportMenuInflater李>
- 两个主题与全息。黑暗和全息。光明没什么不同(Theme.Sherlock,Theme.Sherlock.Light)
- ICS具有“分割动作条”功能
Sherlock活动。用一个实际的例子来完成@Kurtis Nusbaum的工作 更新:正如@rudy-s所说,通过最新的android支持库(api 18),我看到他们已经内置了对actionbar的支持(称为ActionBarCompat类) 我构建了两个简单的应用程序来展示ActionBarSherlock和ActionBar兼容性之间的视觉差异。请参见比较图片: 现在显示按下菜单按钮时的外观:
正如你所看到的,这些图片只是在强调所说的操作栏兼容性仅当您运行的设备是API级别3.0或更高版本时,才为您提供操作栏。而夏洛克则更一般。 下面您可以看到应用程序源代码 菜单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>
夏洛克的活动:
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;
}
}
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);
}
}
sherlock应用程序上需要额外的配置:
更新:
正如@rudy-s所说,通过最新的android支持库(api 18),我看到他们已经内置了对actionbar的支持(称为ActionBarCompat类)。ActionBarSherlock vs ActionBarCompat: 我只想在ActionBarSherlock和ActionBarCompat Lib之间添加一些代码差异 我们可以将一些应用程序从ActionBarSherlock迁移到ActionBarCompat: 步骤:
SherlockFragmentActivity