如何强制 PopupMenu 与锚点重叠?

How to force PopupMenu to overlap anchor?

如何强制 PopupMenu 与锚点重叠?我想重新创建类似于 this:

的内容

您是否考虑过使用 PopupWindow?这些在放置方面提供了更多的灵活性。您可以指定锚点视图和 x 和 y 偏移量,这样您就可以定义重叠。

设置android:dropDownVerticalOffset允许我重叠锚视图:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="popupMenuStyle">@style/PopupMenu</item>
</style>

<style name="PopupMenu" parent="@style/Widget.AppCompat.Light.PopupMenu">
    <item name="android:dropDownVerticalOffset">-36dip</item>
</style>

设置 overlapAnchor 允许我在不设置偏移的情况下重叠锚点视图:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="popupMenuStyle">@style/PopupMenu</item>
</style>

<style name="PopupMenu" parent="@style/Widget.AppCompat.Light.PopupMenu">
    <item name="overlapAnchor">true</item>
</style>

PopupMenu 将 ListPopupWindow 包装在其中。此 ListPopupWindow 使用此 overlapAnchor 属性包装 AppCompatPopupWindow。所有这些都在支持库中。

替代Paritosh Tonk的回答:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="popupMenuStyle">@style/Widget.AppCompat.Light.PopupMenu.Overflow</item>
</style>

或深色主题:

<style name="AppTheme.Dark" parent="Theme.AppCompat.NoActionBar">
    <item name="popupMenuStyle">@style/Widget.AppCompat.PopupMenu.Overflow</item>
</style>

我来这里是为了弄清楚如何创建一个与其锚点重叠的弹出菜单当锚点位于 actionBar 中时。因为这是一个突出的搜索结果问题,我想在这里留下答案,尽管我不确定该解决方案是否适用于 OP。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >
    <!-- This item will expand into a submenu -->
    <item
        android:id="@+id/anchor"
        android:icon="@drawable/ic_anchor"
        android:title="@string/anchor"
        app:showAsAction="always">
        <menu>
            <item
                android:id="@+id/subMenuItemOne"
                android:showAsAction="never"
                android:title="SubMenuItemOne"/>
            <item
                android:id="@+id/subMenuItemTwo"
                android:showAsAction="never"
                android:title="SubMenuItemTwo"/>
        </menu>
    </item>
</menu>