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

2023-12-26

我想使用 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>

样式.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());
    }

    ...

}

基础活动.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);
    }

    ...
}

菜单助手.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()并进行必要的修改。

@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"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AppCompat - API 级别 v8-13 的项目未显示在操作栏中 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐