Android在父图标下显示嵌套菜单

时间:2018-07-26 15:36:20

标签: android android-layout

我有以下非常简单的工具栏点菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/empty"
        android:icon="@drawable/ic_more_vert_white_24px"
        android:orderInCategory="101"
        android:title="@string/options"
        app:showAsAction="always">

        <menu>
            <item
                android:id="@+id/action_edit"
                android:icon="@android:drawable/ic_menu_edit"
                android:title="@string/edit"
                app:showAsAction="ifRoom" />
        </menu>

    </item>
</menu>

看起来像这样:

expanded submenu

当我单击点按钮时,会显示子菜单,但是它与点重叠:

toolbar menu

如何使其显示在点下?我也许可以通过弹出菜单来做到这一点,但感觉应该有一种更简单的方法。

2 个答案:

答案 0 :(得分:0)

我认为您的问题是,在项目的属性“ showAsAction ”的第一个定义中,该属性的ID为。您还需要像在子菜单中一样,将值设置为“ ifAsRoom ”。

您将第一个项目(空)定义为始终,这可以使操作项与操作栏中的其他元素UI重叠。请检查此link

答案 1 :(得分:0)

Toolbar中添加样式,如下所示。

<android.support.v7.widget.Toolbar
    android:id="@+id/menu_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:popupTheme="@style/ThemeOverlay.MyTheme" />

现在像下面这样在MyTheme文件中声明styles.xml

<style name="ThemeOverlay.MyTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:textColor">@android:color/darker_gray</item>
    <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
</style>

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
    <item name="android:overlapAnchor">false</item>
    <item name="android:popupBackground">@android:color/white</item>
</style>

关键思想是设置具有以下属性的actionOverflowMenuStyle

<item name="android:overlapAnchor">false</item>