只是用一个实际的例子来完成@Kurtis Nusbaum 的内容。
更新:正如@rudy-s 所说,使用最新的 android 支持库 (api 18),我看到他们已经内置了对 actionbar 的支持(称为 ActionBarCompat 类)。
我构建了两个简单的应用程序来展示 ActionBarSherlock 和 ActionBar Compatibility 之间的视觉差异。查看对比图:
现在按下菜单按钮时的外观:
如您所见,图像只是强化了所说的内容。 操作栏兼容性仅在您运行的设备为 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 应用需要额外的配置:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
更新:
正如@rudy-s 所说,使用最新的 android 支持库(api 18),我看到他们已经内置了对 actionbar 的支持(称为 ActionBarCompat 类)。