AppCompat – 在操作栏中不显示API级别v8-13的项目

我有一个项目,我总是使用AppCompat库在操作栏中显示。 这只是使用默认溢出图像的子菜单。

这对我来说不适用于API级别v8-13,而且我已经完成了开发者指南所说的一切,包括添加我自己的名称空间。

我正在使用一个自定义的风格,其Theme.AppCompat作为其父(下)。

这是我的第一篇文章,所以我没有足够的声望点来发布活动的图像,但是操作栏中没有该项目,当按下菜单button时,菜单出现在底部。

任何反馈将不胜感激!

AndroidManifest.xml中:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myproject" android:installLocation="auto" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:debuggable="true" android:icon="@drawable/my_app_icon" android:label="@string/app_name" android:theme="@style/CustomActionBarTheme" > <uses-library android:name="com.google.android.maps" /> <activity android:name=".ui.MainActivity" android:label="@string/app_name" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

menu.xml文件

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:MyApp="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/overflow" MyApp:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark" MyApp:showAsAction="always" android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark" android:showAsAction="always"> <menu> <item android:id="@+id/action_about" android:icon="@drawable/about_icon" android:title="About"/> <item android:id="@+id/action_feedback" android:icon="@drawable/feedback_icon" android:title="Feedback"/> <item android:id="@+id/action_settings" android:icon="@drawable/settings_icon" android:title="@string/action_settings"/> </menu> </item> </menu> 

styles.xml

 <resources> <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat"> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="android:titleTextStyle">@style/TitleTextStyle</item> <item name="android:background">@drawable/abc_ab_bottom_solid_dark_holo</item> <item name="titleTextStyle">@style/TitleTextStyle</item> <item name="background">@drawable/abc_ab_bottom_solid_dark_holo</item> </style> <style name="TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textStyle">bold</item> </style> </resources> 

MainActivity.java

 package com.myproject; ... public class MainActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreateEqually(savedInstanceState); ActivityHelper.setLayoutTitle(this, R.layout.main, R.string.main, getSupportActionBar()); } ... } 

BaseActivity.java

 package com.myproject; import android.support.v7.app.ActionBarActivity; ... public class BaseActivity extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } public boolean onCreateOptionsMenu(Menu menu) { return true; } public boolean onPrepareOptionsMenu(Menu menu) { return MenusHelper.displayMenu(this, menu); } ... } 

MenusHelper.java

 package com.myproject; ... public final class MenusHelper { ... public static boolean displayMenu(BaseActivity currentActivity, Menu menu) { // clear former menus menu.clear(); MenuInflater inflater = new MenuInflater(currentActivity); inflater.inflate(R.menu.menu, menu); return true; } ... } 

ActivityHelper.java

 package com.myproject; import android.support.v7.app.ActionBar; ... public final class ActivityHelper { ... public static void setLayoutTitle(Activity activity, int layoutId, String titleStr, ActionBar actionBar) { activity.setContentView(layoutId); actionBar.setTitle(titleStr); actionBar.setDisplayHomeAsUpEnabled(true); } } 

Solutions Collecting From Web of "AppCompat – 在操作栏中不显示API级别v8-13的项目"

尝试把MenusHelper.displayMenu(this, menu);的代码MenusHelper.displayMenu(this, menu);onCreateOptionsMenu()而不是onPrepareOptionsMenu() ,也做了必要的修改。

 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); // In case you have an item MenuItem shareItem = menu.findItem(R.id.menu_share); // To retrieve the Action Provider mActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem); return super.onCreateOptionsMenu(menu); } 

确保您的XML中的菜单如下所示:

 <item android:id="@+id/share" android:title="@string/menu_share" yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider" yourapp:showAsAction="ifRoom|withText"/> 

问题是这样的

 android:showAsAction="always" 

那需要

 youpackagename:showAsAction="always" 

实际上再看一遍,你宣布了两次

 android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark" android:showAsAction="always" 

删除那一点