如何以编程方式将子菜单项添加到新的材料设计 Android 支持库

2024-02-26

我正在尝试将新的菜单项添加到新的 Material Design 抽屉面板中的子菜单中。

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

...

    <android.support.design.widget.NavigationView
        android:id="@+id/main_navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/channel_list_header"
        app:menu="@menu/menu_nav" /> 

</android.support.v4.widget.DrawerLayout>

我确实有 @menu/menu_nav 设置,但现在想添加新的菜单项:

NavigationView mDrawerList = (NavigationView) findViewById(R.id.main_navigation);

Menu menu = mDrawerList.getMenu();
Menu topChannelMenu = menu.addSubMenu("Top Channels");

topChannelMenu.add("Foo");
topChannelMenu.add("Bar");
topChannelMenu.add("Baz");

mDrawerList.invalidate(); // Trying to force a redraw, doesn't help.

显示 @menu/menu_nav 文件中的菜单项,但不显示新添加的菜单项。 有什么想法如何做到这一点吗?


[2016 年 3 月 20 日更新]错误已解决。所以无需担心。

[以下内容已过时。]

向 NavigationView 添加动态菜单目前是设计支持库上的错误. And 我已将其报告给 android bug 源跟踪。所以要等到bug修复了。但如果你想要临时解决方案你能行的。首先添加您的动态菜单..

    navView = (NavigationView) findViewById(R.id.navView);
    Menu m = navView.getMenu();
    SubMenu topChannelMenu = m.addSubMenu("Top Channels");
    topChannelMenu.add("Foo");
    topChannelMenu.add("Bar");
    topChannelMenu.add("Baz");

添加菜单后,只需编写以下代码..

    MenuItem mi = m.getItem(m.size()-1);
    mi.setTitle(mi.getTitle());

目前这是一个很棘手的解决方案。但为我工作...

[更新2015年6月26日]

正如我在 Android Bug 源中报告的这个 Bug,现在 Bug 被标记为未来版本, 链接在这里https://code.google.com/p/android/issues/detail?id=176300 https://code.google.com/p/android/issues/detail?id=176300

所以我们可以说这个错误在未来的库中不再存在。所以你不必使用棘手的解决方案。当未来版本版本号维护此错误时,我还将再次更新此答案。

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

如何以编程方式将子菜单项添加到新的材料设计 Android 支持库 的相关文章

  • ListView 和 CursorAdapter 对于大量数据的性能问题

    我在 sqlite 表中有大约 4k 行 表有 7 列 我用自己的 CursorAdapter 创建了工作 ListView 查询是这样的SELECT FROM table ORDER BY column DESC 表有第一列 id INT
  • 使用 setMessage() 在 AlertDialog 中显示多行文本和变量

    我需要在警报对话框中显示多行文本 如果我使用多个 setMessage 方法 则仅显示最后一个 setMessage 如下所示 final AlertDialog alertDialog new AlertDialog Builder th
  • 浮动操作按钮动画

    当 fab 出现时 它使用动画中的比例进行动画处理 当它隐藏时 它使用向外扩展动画 因此 它是一个缩小和缩小的动画 这个动画要怎么制作呢 从 Zielony 的回答来看 我完全按照我想要的方式制作了它 下面是正确应用效果的代码 scale
  • 清除未接来电并清除 Android 栏中的通知

    使用此代码 我设法将所有未接来电标记为已读 ContentValues values new ContentValues values put Calls NEW 0 if android os Build VERSION SDK INT
  • 使用书法库的某些活动使用不同的字体

    我在用书法 https github com chrisjenx Calligraphy在我的应用程序中使用自定义字体的库 我使用默认字体为整个应用程序设置了自定义字体CalligraphyConfig in my Application类
  • 未找到 Gradle DSL 方法:“exclude()”

    我正在 Android Studio 中工作 当我在 build gradle 文件中添加该行时 dependencies compile files libs poi ooxml schemas 3 12 20150511 a jar e
  • Android 设备与本地 API 服务器通信

    我想知道如何在外部设备上模拟我的 Android 应用程序 以便与我的计算机上运行的本地 API 服务器进行通信 该应用程序使用 cordova 并使用 USB 连接在 Android 设备上运行 我正在本地运行 API 服务器 使用我的机
  • FirebaseAuth - 让用户使用任何提供商更改密码 - Android

    我有一个社交媒体应用程序 我正在使用FirebaseUI让用户使用电子邮件 Google 或 Facebook 登录 注册应用程序 如果使用 电子邮件 作为密码 我怎样才能让用户稍后更改他 她的密码 提供商 如果使用 Facebook 或
  • 从布局中添加和删除视图

    如何从布局中添加和删除视图 我是这样做的 ViewManager entry getParent removeView entry
  • android.os.FileUriExposedException 在 Oreo 中引起(仅!)[重复]

    这个问题在这里已经有答案了 从 Google Play Console 中 我可以看到此异常仅发生在 Android 8 0 的设备上 android os FileUriExposedException at android os Str
  • 语音识别和文本转语音

    我想开发一个实现语音识别的应用程序 然后使用文本到语音引擎实现文本到语音 我发布了下面的代码 我使用两个按钮和一个列表视图 一个按钮用于语音识别 另一个按钮用于文本转语音 列表视图用于两者 首先在列表视图中发布语音识别的结果 然后应用程序将
  • Android MapView v2 黑屏

    我一直在尝试实现 android 的 MapView v2 除了这个错误之外 我让它工作得很好 This is what it looks like when I load the app from scratch 如您所见 没有任何问题
  • 更新到Android 5.0后出现java.lang.UnsatisfiedLinkError

    我正在开发一个 Android 应用程序 它使用一个名为 liballjoyn java so 的本机库 可用here https allseenalliance org developers download在 Android 核心 SD
  • 跨平台 IAP

    我已在 iOS 和 Android 中集成了应用内购买 自动续订订阅 两者都工作正常 我对使用跨平台验证 IAP 有一定的疑问 例如 当多个用户登录一个应用程序时 某一特定应用程序的订阅如何运作 例如 如果用户 A 有标准套餐并且从应用程序
  • ConstraintLayout 源代码位于哪里?

    哪里可以找到android的源代码ConstraintLayout 我在支持框架存储库甚至谷歌搜索中都找不到它 它的源代码在这里 https android googlesource com platform frameworks opt
  • 如何使用游戏循环每五秒在屏幕上出现和消失一个对象

    我正在尝试学习 Android 游戏开发 首先 我尝试每五秒使用游戏循环在屏幕上出现和消失一个对象 但我没有成功 我读过不同的教程和论坛 我按照教程中的方式应用了所有内容 但对象仍然在连续绘制 它并没有消失 我没有得到我所缺少的东西 请指导
  • 尝试在 android 中更新 sqlite 数据库时出错

    我的数据库正在运行 但我插入的所有记录都是为了检查目的 现在我想删除所有表并创建新表 所以我尝试通过更改版本来更新数据库 我没有对创建表查询进行任何更改 但外键约束失败 代码 787 这是我的DBHelper class private s
  • 同一活动中的多个日期选择器

    我对 Android 平台完全陌生 在学习开发过程的同时一直在构建应用程序 目前 我正在开展一项活动 需要部署 2 个日期选择器 一个是 开始日期 另一个是 结束日期 我一直在关注 Android 开发者页面上的 DatePicker 教程
  • Android 中的自定义相机应用程序问题 - 旋转 270、拉伸捕获视图且未获取所有功能

    我从代码中得到了帮助https github com josnidhin Android Camera Example https github com josnidhin Android Camera Example 但面临一些问题 例如
  • onActivityResult() Intent 数据始终为 null

    有人可以告诉我为什么Intent data总是为空 Override protected void onActivityResult int requestCode int resultCode Intent data super onAc

随机推荐