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
主题。从设计的角度来看,这并不是真的推荐。
从下图中可以看出,我的 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
主题。从设计的角度来看,这并不是真的推荐。