如何使溢出弹出菜单避免妨碍操作栏?

时间:2014-11-24 23:46:22

标签: android android-actionbar android-5.0-lollipop material-design android-toolbar

背景

my app上,当我更新到新支持库并尝试使用Lollipop时,我发现了一个奇怪的问题:点击操作栏的溢出按钮(或即使是新的Toolbar类)也会在操作栏顶部显示弹出菜单,隐藏其他操作项,如下所示:

enter image description here

此处,隐藏的操作项是卸载和共享。

问题

我试图通过浮动溢出菜单的样式来避免这个问题,但没有任何帮助。

不仅如此,但似乎这是an intentional behavior,但在许多已更新为具有Material设计的Google应用中,此行为并不成立,正如我所报道的那样{{3 }}

我尝试了什么

我已经尝试在我使用的主题中创建它。实际上我的主题是非常不同的,它的父母是" Theme.AppCompat.Light.NoActionBar" (我使用工具栏作为actionBar),但是这个片段也有这个问题,所以我认为如果一个将被解决,另一个也将解决。

无论如何,这里是片段:

<resources xmlns:tools="http://schemas.android.com/tools">

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:actionOverflowMenuStyle" tools:targetApi="21">@style/OverflowMenu</item>
    </style>

    <style name="OverflowMenu" parent="@android:style/Widget.Material.PopupMenu.Overflow" tools:targetApi="21">
        <item name="android:overlapAnchor">false</item>
        <item name="android:dropDownVerticalOffset">50dip</item>
    </style>

</resources>

这两个属性都没有改变任何东西。

我也尝试过在支持库中查找它的工作原理,但无法找到它。

问题

如何设置溢出操作项的弹出菜单以避免隐藏其他项?

1 个答案:

答案 0 :(得分:20)

如果您正在使用ActionBarActivity,则需要覆盖溢出菜单样式的appcompat版本以及弹出属性的appcompat版本(如果适用)。

<resources>
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light" />

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>
    </style>

    <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
        <!-- Required for pre-Lollipop. -->
        <item name="overlapAnchor">false</item>

        <!-- Required for Lollipop. -->
        <item name="android:overlapAnchor">false</item>
    </style>

</resources>