Как реализовать CoordinatorLayout и панель инструментов в NavigationView

Может ли это быть реализовано: Панель инструментов в NavigationView с помощью CoordinatorLayout

Код правильный?

Пожалуйста, дайте мне пример и помогите мне это сделать Смотрите фото для лучшего понимания

рисунок

activity_main.xml

<!-- notation start -->
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.DrawerLayout >
    <android.support.design.widget.CoordinatorLayout>
        <android.support.design.widget.AppBarLayout>
            <android.support.design.widget.CollapsingToolbarLayout>
                <ImageView/>
                <android.support.v7.widget.Toolbar>
                </android.support.v7.widget.Toolbar>
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
        <android.support.v4.widget.NestedScrollView
            app:layout_behavior = "@string/appbar_scrolling_view_behavior">
<!-- content  -->
        </android.support.v4.widget.NestedScrollView>
        <android.support.design.widget.FloatingActionButton/>
    </android.support.design.widget.CoordinatorLayout>

<!-- notation end-->


      <!-- NavigationView  -->

    <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_activity_main"
        app:menu = "@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

nav_header_activity_main.xml

<?xml version = "1.0" encoding = "utf-8"?>
    <android.support.design.widget.CoordinatorLayout>
        <android.support.design.widget.AppBarLayout>
            <android.support.design.widget.CollapsingToolbarLayout>
                <ImageView/><!-- background Toolbar-->
                <android.support.v7.widget.Toolbar>
                <!-- app:layout_collapseMode = "pin" -->
                </android.support.v7.widget.Toolbar>
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
        <android.support.v4.widget.NestedScrollView
            app:layout_behavior = "@string/appbar_scrolling_view_behavior">
<!-- START content NavigationView header -->
            <LinearLayout>
                <ImageView/>
                <TextView/>
                <TextView/>
            </LinearLayout>
<!--END content NavigationView header -->
        </android.support.v4.widget.NestedScrollView>
        <android.support.design.widget.FloatingActionButton/>
    </android.support.design.widget.CoordinatorLayout>

menu / activity_main_drawer.xml

<?xml version = "1.0" encoding = "utf-8"?>
<menu xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    tools:showIn = "navigation_view">

    <group android:checkableBehavior = "single">
        <item/>
        <item/>
    </group>
    <item android:title = "Communicate">
        <menu>
            <item/>
            <item/>
        </menu>
    </item>
<!-- 20 item in menu -->
</menu>

Любая помощь будет оценена по достоинству. Спасибо.

1
0
817
1

Ответы 1

вам не хватает некоторых атрибутов в приведенном выше xml-коде

1 - вы не установили layout_height и layout_width для appbarlayout, CollapsingToolbarLayout и NestedScrollView.

ваш activity_main должен быть таким, как показано ниже:

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

 <!--specify your header layout in NavigationView-->
<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_activity_main"
    app:menu = "@menu/activity_main_drawer" />

2 - ваш макет nav_header_activity_main.xml должен быть установлен в NavigationView, например (app: headerLayout = "@ layout / nav_header_activity_main.xml"), и вы должны просто поместить виджет для содержимого заголовка, и вы должны избавиться от этих координат, панели приложений, свертывания панели инструментов и панели инструментов в nav_header

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"
   tools:context = ".MainActivity">

    <android.support.design.widget.AppBarLayout
       android:layout_width = "match_parent"
       android:layout_height = "192dp"
       android:theme = "@style/AppTheme.AppBarOverlay">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id = "@+id/toolbar_layout"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        app:layout_scrollFlags = "scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar
            android:id = "@+id/toolbar"
            android:layout_width = "match_parent"
            android:layout_height = "?attr/actionBarSize"
            android:background = "?attr/colorPrimary"
            app:layout_collapseMode = "pin"
            app:layout_scrollFlags = "scroll|enterAlways"
            app:popupTheme = "@style/AppTheme.PopupOverlay" />
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>


<!-- define layout for main content here with NestedScrolView-->
<include layout = "@layout/content_main" />



</android.support.design.widget.CoordinatorLayout>

Другие вопросы по теме