我按照ActionBar compability version
中的代码进行操作当我使用API级别10或更低的代码时,它会显示一个ActionBar,但当我将它用于API级别11或更高级别时,它不会显示徽标图标和操作项。
我检查了课程,我明白了:
ActionBarHelperBase:API级别10或更低。
ActionBarHelperHoneycomb:API等级11或更高。
ActionBarHelperICS:API级别14或更高。
修复ActionBar for Android 3.0或更高版本的最佳方法是什么?特别是Android 4.0
答案 0 :(得分:2)
问题出在Manifest文件中。我应该从清单文件中删除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);
}
答案 1 :(得分:1)
有一个名为ActionBarSherlock的令人难以置信的项目允许使用API中的所有ActionBar功能而不是2.X
它将带您一个示例项目来理解和设置依赖项,它将解决您的许多问题:)只需调用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">
您还可以设置包含栏上项目的menu.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并在需要时提供片段支持。
希望它有所帮助, 问候。
答案 2 :(得分:0)
强烈推荐使用ActionbarSherlock,这是一个更加完整和高级的兼容性版本。如果在具有一个等的Android版本上运行,它使用本机操作栏。
答案 3 :(得分:0)
您是否已将targetSdkVersion
设为11
或更高?您可以保留较低的minSdkVersion
,例如:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />