Search code examples
androidandroid-coordinatorlayoutandroid-collapsingtoolbarlayoutandroid-nestedscrollview

Viewpager contained inside a coordinator layout doesn't scroll


I am trying to implement the collapsing toolbar in which the layout collapses , leaving behind the toolbar and the viewpager in sight. But the viewpager is fixed on screen and doesn't allow me to perform the scroll action on it and as a result I need to drag the toolbar to perform the collapsing behaviour. How to make my viewpager perform the scrolling action? Also I've tried using NestedScrollView to contain my viewpager but on doing that my viewpager doesn't show up on screen.

    <?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:id="@+id/cl_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:fitsSystemWindows="true"
    android:orientation="vertical"

    >


    <android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
     >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        >

        <LinearLayout
            android:id="@+id/ll_vUserProfileRoot"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:fitsSystemWindows="true"
            android:orientation="vertical"
            android:paddingBottom="24dp"
            android:paddingLeft="24dp"
            android:paddingRight="24dp"
            app:layout_collapseMode="parallax"
            >

            <LinearLayout
                android:id="@+id/ll_vFullUserDetails"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:clipChildren="false"
                >

                <ImageView
                    android:id="@+id/ivUserProfilePhoto"
                    android:layout_width="@dimen/user_profile_avatar_size"
                    android:layout_height="@dimen/user_profile_avatar_size"
                    android:layout_marginEnd="@dimen/activity_horizontal_margin"
                    tools:srcCompat="@drawable/ic_feed_top"/>

                <LinearLayout
                    android:id="@+id/vUserDetails"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/tv_user_name"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@android:color/transparent"
                        android:clickable="false"
                        android:text="Sateesh Havannavar"
                        android:textColor="#ffffff"
                        android:textSize="24sp"
                        />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="2"
                            android:text="\@"
                            android:textColor="#bbbbbb"
                            android:textSize="12sp"/>

                        <TextView
                            android:id="@+id/tv_user_nickname"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textColor="#bbbbbb"
                            android:textSize="12sp"
                            />
                    </LinearLayout>


                    <TextView
                        android:id="@+id/tv_user_profile_phone_number"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textColor="#ffffff"
                        android:textSize="@dimen/default_text_size"
                        />

                    <LinearLayout
                        android:id="@+id/vLocation"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="@dimen/activity_vertical_margin"
                        android:baselineAligned="false">

                        <ImageView
                            android:id="@+id/iv_streetView"
                            android:layout_width="@dimen/user_location_size"
                            android:layout_height="@dimen/user_location_size"
                            android:layout_gravity="center"
                            android:layout_marginRight="@dimen/default_margin"
                            app:srcCompat="@drawable/ic_place_white"/>

                        <TextView
                            android:id="@+id/tv_user_location"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:breakStrategy="high_quality"
                            android:maxLines="3"
                            android:textColor="#ffffff"
                            android:textSize="@dimen/default_text_size"
                            />

                    </LinearLayout>

                </LinearLayout>

            </LinearLayout>

            <LinearLayout
                android:id="@+id/vUserStats"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/activity_horizontal_margin"
                android:layout_marginRight="@dimen/activity_horizontal_margin"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:baselineAligned="false">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical"
                        android:text="12"
                        android:textColor="#ffffff"
                        android:textSize="20sp"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical"
                        android:textColor="#ffffff"
                        android:textSize="@dimen/default_text_size"/>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:drawableRight="@drawable/ic_stars_amber_a400_24dp"
                        android:gravity="center_vertical"
                        android:text="4"
                        android:textColor="#ffffff"
                        android:textSize="20sp"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"

                        android:gravity="center_vertical"
                        android:textColor="#ffffff"
                        android:textSize="@dimen/default_text_size"/>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical"
                        android:textColor="#ffffff"
                        android:textSize="20sp"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#ffffff"
                        android:textSize="@dimen/default_text_size"/>
                </LinearLayout>
            </LinearLayout>

            <!--:Todo-->
            <!--Insert here-->


        </LinearLayout>

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


    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="48dp">

        <android.support.design.widget.TabLayout
            android:id="@+id/tlUserProfileTabs"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:background="?attr/colorAccent"
            app:tabGravity="fill"
            app:tabIndicatorColor="#5be5ad"
            app:tabIndicatorHeight="4dp"
            app:tabMode="fixed"/>

    </FrameLayout>

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

    <android.support.design.widget.FloatingActionButton

    android:id="@+id/fab_create"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_gravity="bottom|end"
    android:layout_marginBottom="@dimen/btn_fab_margins"
    android:layout_marginEnd="@dimen/btn_fab_margins"
    app:borderWidth="0dp"
    app:elevation="@dimen/default_elevation"
    app:pressedTranslationZ="12dp"/>

    <!--<android.support.v4.widget.NestedScrollView-->
    <!--android:layout_width="match_parent"-->
    <!--android:layout_height="match_parent"-->
    <!--android:background="@color/colorPrimary"-->
    <!--app:layout_behavior="@string/appbar_scrolling_view_behavior">-->

    <android.support.v4.view.ViewPager
    android:id="@+id/vp_user_profile"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_vertical"
    android:background="@color/colorPrimary"
    android:clipChildren="false"
    android:clipToPadding="false"
    app:layout_anchorGravity="fill"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>


    <!--</android.support.v4.widget.NestedScrollView>-->

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

Solution

  • Use NestedScrollView and put this in your activity and call it before your ViewPager. NestedScrollView can have only one child.

        NestedScrollView scrollView = (NestedScrollView) view.findViewById (R.id.nest_scrollview);
        scrollView.setFillViewport (true);