如何把导航抽屉下面的工具栏?

在这里我的导航抽屉是在toolbar.I也添加了一些XML代码,请帮助我。

在这里,我的导航抽屉在工具栏上方

这里是我的activity.xml

<?xml version="1.0" encoding="utf-8"?> <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_categories" 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:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/activity_main2_drawer" /> </android.support.v4.widget.DrawerLayout> 

和我的app_bar xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.ezybzy.ezybzy.categoris"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_categoris" /> </android.support.design.widget.CoordinatorLayout> 

和我的内容main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.ezybzy.ezybzy.categoris" tools:showIn="@layout/app_bar_categories" android:background="#ffffff"> </RelativeLayout> 

我创build了使用android工作室导航抽屉活动的导航抽屉。

Solutions Collecting From Web of "如何把导航抽屉下面的工具栏?"

 android:layout_marginTop="?attr/actionBarSize" 

到您正在用作抽屉的布局。

在您的导航抽屉xml中,您应该将android:layout_marginTop ="?android:attr/actionBarSize"添加到容器中。

如果您正在使用自定义工具栏,则以这种方式使用抽屉布局。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- The toolbar --> <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" /> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- drawer view --> <LinearLayout android:layout_width="304dp" android:layout_height="match_parent" android:layout_gravity="left|start"> .... </LinearLayout> </android.support.v4.widget.DrawerLayout> </LinearLayout> 

如果您不使用自定义工具栏,则必须将页边距设置为抽屉布局。

 android:layout_marginTop ="?android:attr/actionBarSize" 

创build一个这样的布局:

  <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:elevation="4dp" android:layout_height="fill_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <include android:id="@+id/tool_bar" layout="@layout/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" /> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg_new"> <put your layout here................> </FrameLayout> </LinearLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" android:background="@drawable/bg_all" app:itemIconTint="@android:color/white" app:itemTextColor="@android:color/white" app:theme="@style/list_item_appearance" app:menu="@menu/drawer_menu" > </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

您的抽屉覆盖您的工具栏,以避免尝试下面的代码

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="56dp" android:layout_gravity="start" android:background="@android:color/transparent" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/toolBarStyle" app:titleTextAppearance="@style/Toolbar.TitleText" /> <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:layout_below="@+id/toolbar" android:fitsSystemWindows="true"> <RelativeLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="0dp" android:background="@android:color/transparent" /> <fragment android:id="@+id/navigation_drawer" class="com.buzzintown.consumer.drawer.NavigationDrawerFragment" android:layout_width="310dp" android:layout_height="match_parent" android:layout_gravity="start" tools:layout="@layout/drawer_layout" /> </android.support.v4.widget.DrawerLayout> </RelativeLayout> 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" tools:openDrawer="start"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="@dimen/abc_action_bar_default_height_material" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--content_main is my layout you can design your own--> <!--one more thing is dont put toolbar in your content_main layout--> <include layout="@layout/content_main" /> <FrameLayout android:id="@+id/content" layout="@layout/content_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- The navigation drawer --> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout> </LinearLayout> 

当然android:layout_marginTop="?attr/actionBarSize"做的工作

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize"> 

但问题是drawerlayout是工具栏的顶部。 这就是为什么在这里褪色。 你可以通过删除褪色

 mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent)); 

但在某些设备上,它可能看起来有线。

使用Android Studio时。 我们可以创buildNavigationDrawerActiviity有3个文件命名

activity_main.xml中

app_bar_main.xml

nav_header_main.xml

content_main.xml

所以我们可以跳过app_bar_main.xml ,我们可以删除淡入淡出。

步骤1

使活动主的根视图为Vertical LinearLayout

 <LinearLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true" tools:context="com.example.MainActivity"> </LinearLayout> 

activity_main.xml添加DrawerLayout并在DrawerLayout包含content_main.xml 。 并在AppBarLayout上方添加DrawerLayout

 <LinearLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.qproinnovations.schoolmanagement.activity.HomeActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" > </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:openDrawer="start"> <!-- drawer view --> <include layout="@layout/content_main" /> <!-- drawer content --> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/activity_home_drawer" /> </android.support.v4.widget.DrawerLayout> </LinearLayout> 

第2步

添加并replaceNavigationDrawerActiviity的setContentView()

 setContentView(R.layout.activity_main); 

最后我们有

在这里输入图像说明

使用可以改变导航抽屉xml android:layout_marginTop ="0dp"设置工具栏中的上边距

一个简单而又好的解决scheme是设置fitsSystemWindows=false

 android.support.v4.widget.DrawerLayout 

有id为

 android:id="@+id/drawer_layout" 

并为navigationViewlayout_marginTop设置为?attr/actionBarSize layout_marginTop ,它将获得操作栏大小并将其设置为边距

以下是完整的activity_main.xml代码,其中包含上面列出的更改。

 <?xml version="1.0" encoding="utf-8"?> <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="false" 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:layout_marginTop="?attr/actionBarSize" android:layout_gravity="start" android:fitsSystemWindows="true" app:menu="@menu/activity_main_drawer" /> <!--app:headerLayout="@layout/nav_header_main"--> </android.support.v4.widget.DrawerLayout>