将操作栏兼容性版本与 Android 4.0 配合使用



我遵循了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" />

最新更新