我是Android的新手,我试图在我的项目中添加导航抽屉(仅在一个活动中)。 问题是,当我添加抽屉时,我收到了一个错误。为了解决这个问题,我将我的应用程序样式更改为Theme.AppCompat.NoActionBar,但这样做会删除其他活动中的所有其他操作栏。
我想在项目中使用另一种样式,只删除该主要活动中的操作栏,如果这可以解决我的问题。 希望你们能帮助我。谢谢。
这是我的代码:
<style name="MyAppStyle" parent="@style/Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/bg_login</item>
<item name="colorPrimaryDark">@color/bg_login</item>
<item name="colorAccent">@color/activity_background</item>
</style>
java代码:
private void setDrawer(){
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
android.support.v7.app.ActionBarDrawerToggle toggle = new android.support.v7.app.ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
//drawer.setDrawerListener(toggle);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
xml文件:
<android.support.v4.widget.DrawerLayout
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"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start" >
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/bg_login"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
答案 0 :(得分:4)
<activity
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
只需将主题设置为仅适用于主要活动,然后它就不会在该特定活动上显示操作栏
答案 1 :(得分:1)
您需要做的就是为清单中的活动设置不同的主题,
Theme.AppCompat.Light.DarkActionBar
您想要的活动Actionbar
然后
Theme.AppCompat.NoActionBar
包含Navigation Drawer
的活动以及<Application
下的AppTheme。
希望有所帮助
答案 2 :(得分:0)
您收到此错误,因为样式Theme.AppCompat.Light.DarkActionBar
已包含工具栏。所以在这里你试图将一个actionBar放在另一个actioBar上,这会导致错误
首先设置一个包含NoActionBar
的样式
然后像在每个活动中一样设置工具栏,并且不要在您不想拥有工具栏的活动中执行任何操作。
此外,如果您正在使用actionBar和navigationDrawer,您可能会对使用Fragments感兴趣,这将有助于创建动态UI界面。