我遵循了ActionBar兼容性版本中的代码
当我将代码用于 API 级别 10 或低于它时,它会显示一个操作栏,但当我将其用于 API 级别 11 或更高版本时,它不显示徽标图标和操作项。
我检查了课程,我明白了:
ActionBarHelperBase :API 级别 10 或更低。
ActionBarHelperHoneycomb :API 级别 11 或更高版本。
ActionBarHelperICS :API 级别 14 或更高版本。
修复Android版本3.0或更高版本的动作栏的最佳方法是什么?特别是安卓4.0
问题出在清单文件中。我应该从清单文件中删除android:theme="@style/Theme.ThemeCompabilityVersion
。
然后我需要在 OnCreate() 方法中检查代码中的版本,例如:
private void setTheme() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
setTheme(R.style.ThemeCompabilityVersion);
else
setTheme(R.style.AppTheme);
}
有一个令人难以置信的项目叫做ActionBarSherlock,它允许在2.X上使用API中的所有ActionBar功能
这将花费您一个示例项目来了解和设置依赖项,它将解决您的许多问题:)只需调用getSupportActionBar(),所有方法都将可用。
我犯的一些常见错误是没有正确设置主题。
<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/bg_striped</item>
<item name="android:background">@drawable/bg_striped</item>
<item name="backgroundSplit">@drawable/bg_striped_split</item>
<item name="android:backgroundSplit">@drawable/bg_striped_split</item>
然后,您必须将该主题应用于将具有 ActionBar 支持的每个活动或应用程序标记。
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:name=".ApplicationClass"
android:theme="@style/Theme.Styled">
您还可以设置一个菜单.xml其中包含栏上的项目:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_launcher"
android:title="TestMe"
android:menuCategory="system"
android:showAsAction="never" />
<item android:id="@+id/menu_launch"
android:icon="@drawable/ic_launcher"
android:title="Test2"
android:menuCategory="secondary"
android:showAsAction="never" />
<item android:id="@+id/menu_go"
android:icon="@drawable/ic_launcher"
android:title="Test"
android:showAsAction="always|withText" />
</menu>
我学到的最有趣的事情是,每个活动或片段都可以将它们的操作放在栏上,因此如果片段可搜索,则可以设置带有放大镜图标的选项等。
它在以前的版本中有一些片段问题,在当前版本中似乎已经解决,如果需要,我可以放一些示例代码来设置 RoboGuice 和片段支持。
希望对您有所帮助,问候。
强烈推荐 ActionbarSherlock,一个更完整和高级的兼容性版本。 如果在具有等的安卓版本上运行,它使用本机操作栏。
actionbarsherlock.com
targetSdkVersion
设置为 11
或更高?您可以保持较低的minSdkVersion
,例如:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />