2016-04-22 61 views
1

我是Android新手,我试图在我的项目中添加一个导航抽屉(仅限于一项活动)。 问题是,当我添加抽屉时出现错误。为了解决这个问题,我将我的应用程序样式更改为Theme.AppCompat.NoActionBar,但这样做会删除其他活动中的所有其他操作栏。除了主要活动之外的所有活动中的Android操作栏

我想在项目中使用另一种风格,并只在该主要活动中删除操作栏,如果这可以解决我的问题。 希望你们可以帮助我。谢谢。

这里是我的代码:

<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

当我改变了风格@风格/ Theme.AppCompat.Light。 DarkActionBar,我得到这个错误:java.lang.IllegalStateException:这个活动已经有一个窗口装饰提供的操作栏。请勿在您的主题中请求Window.FEATURE_SUPPORT_ACTION_BAR并将windowActionBar设置为false以代替使用工具栏。 –

+0

“...但这样做会删除其他活动中的所有其他操作栏。” - 在''上设置'NoActionBar'主题。 –

+0

非常感谢。 –

回答

0

您收到此埃罗因为样式Theme.AppCompat.Light.DarkActionBar已经包含一个工具栏。所以在这里你试图把一个actionBar放在另一个actioBar上,这会导致错误。
首先设置一个样式,其中包含NoActionBar
然后像在每个活动中那样设置工具栏,并且不要在活动中执行任何不想使用工具栏的任何操作。

另外,如果您正在使用actionBar和navigationDrawer,您可能会对使用Fragments感兴趣,这将有助于制作动态UI界面。

+0

非常感谢。 –

1

所有你需要做的就是在清单活动设置不同的主题,

Theme.AppCompat.Light.DarkActionBar您要Actionbar

然后

Theme.AppCompat.NoActionBar到包含Navigation Drawer,也可以作为AppTheme下活动活动<Application

希望它可以帮助

+0

非常感谢。 –

3
<activity 
      android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
    /> 

只需设置你的主题,只有对mainactivity那么它不会显示动作条上的特定活动