【问题标题】:Remove subsection and from navigation drawer submenu从导航抽屉子菜单中删除小节和
【发布时间】:2016-01-06 23:34:32
【问题描述】:

我想删除在子菜单中创建的不需要的空间。

有没有可能我可以从menu.xml 类中实现它?

这是我的navigation_drawer_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">


<group android:checkableBehavior="single">
    <item
        android:id="@+id/all"
        android:checked="true"
        android:icon="@drawable/ic_channels"
        android:title="All Channels" />
    .......
    <item
        android:id="@+id/other"
        android:icon="@drawable/ic_other"
        android:title="Others" />

</group>

<item android:title="">
    <menu>
        <item
            android:id="@+id/setting"
            android:icon="@drawable/ic_action_settings"
            android:title="Settings" />
        <item
            android:id="@+id/about"
            android:icon="@drawable/ic_about"
            android:title="About" />
        <item
            android:id="@+id/share"
            android:icon="@drawable/ic_share"
            android:title="Share" />
    </menu>
</item>

谢谢。

【问题讨论】:

标签: android navigation-drawer submenu


【解决方案1】:

这就是我实现它的方式。因为您正在向菜单添加标题,所以它无法识别它是空的。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav1"
            android:checked="true"
            android:title="Pos 1" />
        <item
            android:id="@+id/nav2"
            android:title="Pos 2" />

    </group>

    <group
        android:id="@+id/menu_two"
        android:checkableBehavior="single">
        <item
            android:id="@+id/pos3"
            android:title="Pos 3" />
        <item
            android:id="@+id/pos4"
            android:title="Pos 4" />

    </group>

</menu>

【讨论】:

  • 谢谢哥们。问题是我没有添加组唯一 ID。添加 id 可以解决问题。谢谢!!
【解决方案2】:

首先,请阅读 Ian Lake(Android 开发者倡导者)的回答:

NavigationView 试图匹配材料设计specs for the navigation drawer,它规定了内容区域之间的 8dp 空间。 一般没有办法覆盖NavigationView 专门打破规范。

发件人:How I can remove the unnecessary top padding of the Navigation view?

如您所见,这个不需要的填充是您部分的sub header

要删除它,您需要删除它

&lt;item android:title=""&gt;&lt;/item&gt;

为此,您需要将**所有菜单元素** () 合并到一个组中(无子部分)。

更改后您的代码应如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android">


<group android:checkableBehavior="single">
    <item
        android:id="@+id/all"
        android:checked="true"
        android:icon="@drawable/ic_channels"
        android:title="All Channels" />
    .......
    <item
        android:id="@+id/other"
        android:icon="@drawable/ic_other"
        android:title="Others" />

     <menu>
        <item
            android:id="@+id/setting"
            android:icon="@drawable/ic_action_settings"
            android:title="Settings" />
        <item
            android:id="@+id/about"
            android:icon="@drawable/ic_about"
            android:title="About" />
        <item
            android:id="@+id/share"
            android:icon="@drawable/ic_share"
            android:title="Share" />
       <menu>
</group>

您仍然可以这样做:How to create a custom navigation drawer in android

如果有问题,欢迎提问

希望对你有帮助

【讨论】:

  • 首先感谢您的详细解答。我已关注您的回复,令人困惑的是,现在子菜单正在从其上方的项目标题中获取标题。例如子菜单的标题是上面的“Others”,如果更改项目的名称,子菜单标题的值将变为:S
  • 似乎有必要给一个子菜单名称。删除这个&lt;menu&gt;,我的意思是所有项目都在同一个菜单中——没有子菜单。然后使用样式制作底部边框线并添加到others 项目。它应该工作
  • 关于样式项目,您可以在这里找到:stackoverflow.com/questions/2944244/…
  • 我只想在两个菜单中添加一个简单的行..您建议的链接是用于设置整个菜单的样式而不是导航抽屉菜单,另一个菜单。
  • 查看接受的答案。问题是我没有添加组唯一 ID。添加唯一 id 会为两个不同的组创建分隔符。仍然非常感谢您的帮助:)
【解决方案3】:

要以编程方式完成此操作,请使用重载:

menu.add(int groupId, int itemId, int order, int titleRes)

(并确保为不同的部分提供不同的 groupId)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多