android - AppCompat 溢出菜单重叠操作栏

标签 android android-menu android-actionbar-compat

我一直致力于将新的 appcompat-v7:21.0.0 添加到我的项目中。出于某种原因,我的操作栏上的溢出菜单决定在打开时与我的操作栏重叠。它应该在操作栏下方打开。

enter image description here

这是我的基本布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"/>
    <RelativeLayout
        android:id="@+id/top_status"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:layout_gravity="top|center"
        android:background="@color/message_bottom_background"
        android:gravity="center_horizontal"
        tools:ignore="UselessParent"
        android:visibility="gone">
    <ImageView
        android:id="@+id/top_warning_thumb"
        android:src="@drawable/ic_action_warning"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:contentDescription="@string/top_warning_thumb_desc"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:visibility="gone"/>
    <TextView
        android:id="@+id/top_warning_text"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="@string/test_text_shortest"
        android:layout_toEndOf="@id/top_warning_thumb"
        android:layout_toRightOf="@id/top_warning_thumb"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:textSize="20sp"
        android:textColor="@color/theme_primary_background"
        android:layout_marginTop="1sp"
        />
    </RelativeLayout>
</FrameLayout>
    <!-- The navigation drawer -->
    <LinearLayout
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:orientation="vertical"
        android:background="@color/card_background">
        <TextView
            android:id="@+id/left_status"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingTop="10dip"
            android:paddingBottom="10dip"
            android:textSize="25sp"
            android:lineSpacingExtra="5sp"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="@string/test_text_shortest"
            android:paddingLeft="0sp"
            android:paddingRight="0sp"
            android:textColor="@color/card_background"
            />

        <ListView android:id="@+id/left_drawer_child"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_gravity="start"
              android:choiceMode="singleChoice"
              android:divider="@color/transparent"
              android:dividerHeight="1dp"
              android:paddingLeft="0sp"
              android:paddingRight="0sp" />
    </LinearLayout>
            <!--android:divider="#666"-->
</android.support.v4.widget.DrawerLayout>
</LinearLayout>

这是我与菜单相关的主要 Activity 的代码:

public class MainActivity extends ActionBarActivity implements WifiDiagnosticFragment
    .OnFragmentInteractionListener,DispatchFragment.OnFragmentInteractionListener,
    TextMessageViewerFragment.OnFragmentInteractionListener,
    SupervisorFragment.OnFragmentInteractionListener,
    WorklistFragment.OnFragmentInteractionListener, Observer {
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.base_menu, menu);
    if (BuildConfig.BUILD_TYPE.equals("debug")){
        menu.findItem(R.id.device_admin).setVisible(true);
    }
    return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Pass the event to ActionBarDrawerToggle, if it returns true,
    // then it has handled the app icon touch event
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    // Handle your other action bar items...
    switch (item.getItemId()) {
        case R.id.help:
            android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
            HelpDialog helpDialog = new HelpDialog();
            helpDialog.show(fm,"Help");
            return true;
        case R.id.device_admin:
            fm = getSupportFragmentManager();
            AdminDialog adminDialog = new AdminDialog();
            adminDialog.show(fm,"Device Admin");
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

    //return super.onOptionsItemSelected(item);
}
}

最佳答案

正如 rciovati 所说,这是期望的行为:google.com/design/spec/components/menus.html

关于android - AppCompat 溢出菜单重叠操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26535647/

相关文章:

java - 在Sqlite room中写行查询

javascript - 在 build.phonegap 中构建应用程序时,包含名称为phonegap.js 或 coredova.js 的文件

java - 如何使用 bytes_downloaded 和 bytes_total Android/Java 测量下载速度

java - 我在 Android Studio 中遇到 java.lang.unsupportedoperationexception

android - 作为 self 管理的 ActionBar 的工具栏与作为框架管理的 ActionBar 的工具栏

android - 如何将 ActionBarCompat Activity 显示为在 AndroidManifest.xml 中设置其主题的对话框?

android - 如何在Android中使用C++

android - 从 Activity 中创建新的 menuInflater 或 getMenuInflater()?

java - 如何部分禁用 Android 工具栏中的主页按钮点击?

java - 如何设置 Android ActionBarCompat 标题文本的样式