如何在工具栏下方放置溢出菜单而不是溢出菜单以重叠工具栏

Vij*_*mi 5 android android-intent android-layout

初始视图 在点击共享图标时,弹出窗口包含工具栏内容 在点击时会看到弹出窗口中的所有选项,它会在工具栏下方正确显示

我已经为工具栏添加了shareActionProvider我的问题是,只要我点击共享图标,弹出菜单将覆盖工具栏内容,但是当我点击弹出菜单下列出的所有选项时,弹出菜单将完美地定位在工具栏.

我的要求是,一旦我点击共享图标,我的弹出菜单应该填充在工具栏下面,而不是在我选择了查看全部选项之后.

menu.xml文件

<item
    android:id="@+id/menu_item_share"
    app:showAsAction="always"
    android:title="Share"
    android:icon="@drawable/abc_ic_menu_share_mtrl_alpha"/>
Run Code Online (Sandbox Code Playgroud)

Java代码

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    MenuItem item = menu.findItem(R.id.menu_item_share);

    mShareActionProvider = new ShareActionProvider(getActivity()) {
        @Override
        public View onCreateActionView() {
            return null;
        }
    };

    MenuItemCompat.setActionProvider(item, mShareActionProvider);

    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(createShareIntent());
    }
}
Run Code Online (Sandbox Code Playgroud)

style.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="actionOverflowMenuStyle">@style/PopupMenu</item>
</style>
<style name="PopupMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
    <item name="android:popupBackground">@color/colorPrimary</item>

    <!-- Required for pre-Lollipop. -->
    <item name="overlapAnchor">false</item>
    <item name="android:dropDownVerticalOffset">-4.0dip</item>

    <!-- Required for Lollipop. -->
    <item name="android:overlapAnchor">false</item>
    <item name="android:dropDownVerticalOffset">-4.0dip</item>
</style>
Run Code Online (Sandbox Code Playgroud)

pio*_*543 9

根据材料设计规范(参见菜单部分):

菜单是一张临时的纸张,总是与应用栏重叠,而不是作为应用栏的扩展.

菜单重叠应用栏

所以你看到的是菜单的正确材料设计.


要在主要样式用途中更改它 <item name="actionOverflowMenuStyle">@style/OverflowMenu</item>,在哪里

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
  <!-- Required for pre-Lollipop. -->
   <item name="overlapAnchor">false</item>
   <item name="android:dropDownVerticalOffset">-4.0dip</item>
  <!-- Required for Lollipop. -->
   <item name="android:overlapAnchor">false</item>
   <item name="android:dropDownVerticalOffset">4.0dip</item>
</style>
Run Code Online (Sandbox Code Playgroud)

对于棒棒糖风格必须在values-v21.