Android ActionBar 与设置选项重叠

Android ActionBar Overlap with Settings Options

从下图中可以看出,我的 Action Bar 菜单项与我的自定义 ActionBar 重叠。这是因为我使用了主题.NoActionBar 然后在.java 中声明了自己的action bar 如下:

public class MenuActivity extends ActionBarActivity {

private Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu_activity);

    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(toolbar);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

工具栏:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:elevation="4dp">

和布局...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".MainActivity">

<include
    android:id="@+id/tool_bar"
    layout="@layout/custom_toolbar"
    ></include>

<TextView
    android:layout_below="@+id/tool_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

如您所见,问题出在 .NoActionBar 主题上。我试过环顾四周并在我的菜单项顶部添加填充,但它不起作用。任何帮助表示赞赏。

这完全是预期的行为,并遵循 Material Design 官方指南。

Menus appear above all other in-app UI elements.

它由 Theme.Material 主题(如果您使用 API > 21)或 Theme.AppCompat(如果您使用 support-v7 作为它)提供给您看起来。你不应该担心这个。

如果这不是您对应用的期望,请尝试切换到较旧的主题,例如 Holo 主题。从设计的角度来看,这并不是真的推荐。