Как показать всплывающее меню под панелью действий?

Я работаю над всплывающим меню в панели действий. Но я застрял, чтобы отобразить точное ниже панели действий (cut-to-cut). Я помещаю два моментальных снимка.

Мой снимок экрана:

Введите описание изображения здесь

Я хочу точное всплывающее меню ниже панели действий, как показано ниже.

Скриншот коррекции:

Введите описание изображения здесь

Мой фрагмент кода:

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/action_filter" android:icon="@drawable/ic_filter_white_18dp" android:title="@string/action_filter" app:showAsAction="ifRoom" /> <item android:id="@+id/action_label" android:icon="@drawable/ic_add_circle_outline_white_18dp" android:title="@string/action_label" app:showAsAction="ifRoom" /> <item android:id="@+id/action_settings" android:title="@string/action_settings" app:showAsAction="never" /> 

Solutions Collecting From Web of "Как показать всплывающее меню под панелью действий?"

Задайте тему в манифесте android

 android:theme="@android:style/Theme.Holo.Light" 

В соответствии с моим кодом это точное сотворение, меняя стиль.

 <style name="AppTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="android:actionMenuTextColor">@color/text_white</item> <item name="android:popupMenuStyle">@style/PopupMenu.Example</item> <item name="actionOverflowMenuStyle">@style/OverflowMenu</item> </style> <style name="PopupMenu.Example" parent="@android:style/Widget.Holo.Light.ListPopupWindow"> <item name="android:popupBackground">#efefef</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> <item name="android:dropDownVerticalOffset">4.0dip</item> </style> 

При работе с темой AppCompat ниже код поможет вам. Или Kitkat или Lollipop

Создайте свой стиль.xml, как показано ниже.

 <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/black</item> <item name="android:background">@android:color/transparent</item> <item name="actionOverflowMenuStyle">@style/OverflowMenu</item> </style> <style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow"> <item name="android:windowDisablePreview">true</item> <item name="overlapAnchor">false</item> <item name="android:dropDownVerticalOffset">5.0dp</item> <!--<item name="android:popupBackground">#FFF</item>--> </style> 

Если вы хотите использовать тему ActionBar и AppCompat а не тему ToolBar или Holo , вы можете использовать этот код:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="actionOverflowMenuStyle">@style/MyOverflowMenu</item> </style> <style name="MyOverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow"> <item name="overlapAnchor">false</item> <item name="android:overlapAnchor" tools:ignore="NewApi">false</item> <item name="android:dropDownVerticalOffset">4.0dip</item> </style> 

Это сработало для меня.

Вы можете достичь этого с помощью свойства style overlapAnchor = false

  <style name="toolBarStyle" parent="AppTheme"> <item name="popupTheme">@style/toolbarPopup</item> </style> <style name="toolbarPopup" parent="@android:style/Widget.Holo.ListPopupWindow"> <!--ThemeOverlay.AppCompat.Light--> <item name="android:popupBackground">#AF0000</item> <item name="overlapAnchor">false</item> <item name="android:dropDownVerticalOffset">5dp</item> </style> 

И установите этот стиль в AppTheme, как показано ниже.

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- to avoid overlay of popup window in toolbar --> <item name="actionOverflowMenuStyle">@style/toolBarStyle</item> </style>