Как реализовать CoordinatorLayout и панель инструментов в NavigationView - PullRequest
0 голосов
/ 07 сентября 2018

Может ли это быть реализовано: Панель инструментов в 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>

Меню / 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 голосов
/ 09 сентября 2018

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

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

Ваш код деятельности должен быть таким, как показано ниже:

   <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>
...