android – AppCompat – 项目未显示在API级别v8-13的 *** 作栏中

android – AppCompat – 项目未显示在API级别v8-13的 *** 作栏中,第1张

概述我有一个项目,我希望始终使用AppCompat库在 *** 作栏中显示.它只是一个使用默认溢出图像的子菜单. 这在API级别v8-13上对我不起作用,我已经完成了开发人员指南所说的一切,包括添加我自己的命名空间. 我正在使用一个自定义样式,其中Theme.AppCompat作为其父级(如下). 这是我的第一篇帖子,所以我没有足够的声望点来发布活动图像,但是当我按下菜单按钮时, *** 作栏中缺少该项目,菜单显示在 我有一个项目,我希望始终使用AppCompat库在 *** 作栏中显示.它只是一个使用默认溢出图像的子菜单.

这在API级别v8-13上对我不起作用,我已经完成了开发人员指南所说的一切,包括添加我自己的命名空间.

我正在使用一个自定义样式,其中theme.AppCompat作为其父级(如下).

这是我的第一篇帖子,所以我没有足够的声望点来发布活动图像,但是当我按下菜单按钮时, *** 作栏中缺少该项目,菜单显示在底部.

任何反馈将不胜感激!!

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);    }}
解决方法 尝试将代码放入MenusHelper.displayMenu(this,menu);进入onCreateOptionsMenu()而不是onPrepareOptionsMenu()并进行必要的修改.
@OverrIDepublic 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 – AppCompat – 项目未显示在API级别v8-13的 *** 作栏中全部内容,希望文章能够帮你解决android – AppCompat – 项目未显示在API级别v8-13的 *** 作栏中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1138021.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存