除主要活动

时间:2016-04-22 14:15:57

标签: android

我是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" />

3 个答案:

答案 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界面。