Вы можете добавить layout_marginTop
как это,
<android.support.design.widget.NavigationView
android:layout_marginTop="@dimen/abc_action_bar_default_height_material"
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
но ящик будет отображаться как верхний слой на панели инструментов.
Здесь еще один Choppy способ добавить его ниже на панель инструментов !!!
не может быть лучшим, но он работает!
конечный результат будет выглядеть следующим образом
Если создать проект как проект навигации Drawer (Navigation Drawer Activity
), это даст вам четыре XML файлы в создании в папке layout
- app_bar_main
- content_main
- navigatin_main
activity_main
как эти XMLs связаны? основном я вижу include tag
используется
Ваша активность связана с activity_main
activity_main
имеет app_bar_main
и navigation_view
(ящик)
app_bar_main
имеет toolbar
и content_main
по умолчанию
сейчас позволяет удалить activity_main
и установить его содержимое непосредственно на панели приложения main и используйте его в качестве основного макета для Activity.
Чтобы добавить ящик под панель инструментов , добавьте его под станцию android.support.design.widget.AppBarLayout
, потому что она содержит панель инструментов, и ее должно быть сверху.
вот пример app_bar_main.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="none.navhead.MainActivity">
<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>
//------ taken from activity_main
// content main
<include layout="@layout/content_main" />
// you need this padding
<android.support.v4.widget.DrawerLayout
android:paddingTop="?attr/actionBarSize"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start">
<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:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
</android.support.design.widget.CoordinatorLayout>
пс вы можете установить app_bar_main.XML к setContentView вашей деятельности просто играть вокруг есть много способов;)
@tyczj если вы посмотрите на последнюю версию магазина Google Play. Ящик навигации находится под панелью инструментов. Я хотел бы реализовать что-то похожее на это. – safaiyeh
@tyczj Как обрабатывать действия панели инструментов, когда панель навигации открыта – safaiyeh
вы не делаете, если у вас есть действия, которые вы хотите, чтобы пользователь делал, когда ящик открыт, вы должны поместить их в макет ящиков – tyczj