如何使我的菜单显示在Action Bar区域下方

时间:2015-08-24 06:45:12

标签: android android-layout android-activity

我的问题是我如何将菜单下拉菜单移动到粉红色区域的空间(见第二张图片)。如果现在它也出现在Action Bar区域,我也不想要。我想要我的菜单显示在操作栏下方。

请各位帮我解决这个问题。

enter image description here

这就是菜单的来源。

enter image description here

我希望我的菜单显示在操作栏的下方。

这就是我的menu.xml的样子

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context="com.example.mobileinventorysuit.MainActivity" >

    <item
        android:id="@+id/login_mnu_imports"
        android:icon="@drawable/import_menu"
        app:showAsAction="always"
        style="@style/OverflowMenu"
        android:title="Import"/> 
   <item
        android:id="@+id/login_mnu_settings"
        android:icon="@drawable/settings_menu"
        style="@style/OverflowMenu"
        app:showAsAction="always"
        android:title="Settings"/>
     <item
        android:id="@+id/login_mnu_dev"
        android:icon="@drawable/dev"
        style="@style/OverflowMenu"
        app:showAsAction="always"
        android:title="Device Info"/>
    <item
        android:id="@+id/login_mnu_exit"
        style="@style/OverflowMenu"
        app:showAsAction="always"
        android:icon="@drawable/ic_lock_power_off"
        android:title="Exit"/>


</menu>

4 个答案:

答案 0 :(得分:4)

实际上ActionBar菜单应该显示在操作栏的顶部。 来自Documentation

  

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

如果你仍然想要这种行为,你可以使用它。但它不推荐。

<style name="OverflowMenu" parent="Widget.AppCompat.PopupMenu.Overflow" >
         <item name="overlapAnchor">false</item>
         <item name="dropDownVerticalOffset">?attr/actionBarSize</item>
</style>

检查此答案Why is my overflow dropdown menu on top of the actionbar?

修改

如果您想在ToolBar

中放置图标

menu.xml

中添加此内容
 xmlns:app="http://schemas.android.com/apk/res-auto"

并在您的menuitems中添加此行

 app:showAsAction="always"

答案 1 :(得分:0)

我们可以在PopUpWindow

中使用它
   mWindow.showAsDropDown(anchor, getScreenWidth((Activity) mContext) - getPixelFromDp(mContext, 465), getPixelFromDp(mContext, 0));

  public static int getScreenWidth(Activity context){
     Display display = context.getWindowManager().getDefaultDisplay();
     return display.getWidth();
  }

   public static int getPixelFromDp(Context context, int dpUnits) {
      float pixel = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpUnits, getDisplayMetrics(context));
      return (int) pixel;
 }

答案 2 :(得分:0)

我认为这是正确的

ptr

答案 3 :(得分:0)

转到res => values =>样式,然后添加我在下面的注释中指出的这两行。它将对您有帮助

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

     //add these two line scripts and it will work properly

    <item name="overlapAnchor">false</item>
    <item name="android:dropDownVerticalOffset">?attr/actionBarSize</item>
</style>