10

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

Мой экран вопрос выстрел:

enter image description here

Я хочу точно всплывающее меню нижеприведенного ActionBar ниже скриншоте

Скриншот Исправление:

enter image description here

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

<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" /> 

+0

Пожалуйста, не публикуйте скриншоты или ссылку. Вместо этого отправьте свой код – Andrew

+0

. Я поставлю свой фрагмент кода в свой вопрос. – Vasant

ответ

4

Установите тему на андроид манифеста для

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

По моему коду это точно sotution, изменив стиль.

<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> 
+0

Добавление смещения создавало дополнительное пространство между Панели инструментов и меню в Android 4.4.4. – Ankit

+2

Я не использовал панель инструментов здесь, я использовал панель действий. – Vasant

+0

спасибо за включение pre-lollipop слишком – Safeer

1

Вы можете достичь этого свойства стиля overlapAnchor = ложь

<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> 
+0

«overlapAnchor» требует минимального уровня API 21 –

9

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

Сделайте свой style.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> 
+0

Работаю отлично, спасибо, человек –

6

Если вы хотите продолжать использовать 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> 

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

+1

Работал и на меня. Благодарю. – dazed

+0

Работал для меня. Протестировано на Android 4.x, 6.x. Благодаря! – hungtdo