如何强制PopupMenu重叠锚点?

时间:2015-01-28 21:05:55

标签: android android-recyclerview popupmenu

如何强制PopupMenu重叠锚点?我想重新创建类似this的内容:

Menus usage

5 个答案:

答案 0 :(得分:13)

设置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。所有这些都在支持库中。

答案 1 :(得分:8)

替代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>

答案 2 :(得分:1)

设置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>

答案 3 :(得分:0)

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

答案 4 :(得分:0)

当我试图弄清楚当锚点在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>