Search code examples
androidandroid-scrollviewandroid-constraintlayoutandroid-nestedscrollview

ScrollView does not scroll to the Bottom in android


I know this question has been asked many times over here, but none of the solutions have helped me. I did try changing the margins to padding, it does scroll then, but then I am unable to position the buttons in a proper manner. Here is the xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:background="@color/colorPrimary"
    android:scrollbars="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/about_us_toolbar"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

    <ScrollView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/about_us_toolbar"
        app:layout_constraintVertical_bias="0.0"
        app:layout_constraintHorizontal_bias="0.0">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.AppCompatImageView
                android:id="@+id/about_us_udaan_chakali"
                android:layout_width="0dp"
                android:layout_height="150dp"
                android:src="@drawable/udaan_wing"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="1.0"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.0" />

            <android.support.v7.widget.AppCompatTextView
                android:id="@+id/about_us_title"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Udaan"
                android:textAlignment="center"
                android:textColor="@color/colorWhite"
                android:textSize="32sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/about_us_udaan_chakali"
                app:layout_constraintVertical_bias="0.0" />

            <android.support.v7.widget.AppCompatTextView
                android:id="@+id/about_us_description"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="16dp"
                android:gravity="center"
                android:text="Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. "
                android:textAlignment="center"
                android:textColor="@color/colorWhite"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/about_us_title"
                app:layout_constraintVertical_bias="0.0" />

            <android.support.v7.widget.AppCompatTextView
                android:id="@+id/about_us_connect"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="32dp"
                android:gravity="center"
                android:text="Connect with us"
                android:textAlignment="center"
                android:textColor="@color/colorWhite"
                android:textSize="20sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/about_us_description"
                app:layout_constraintVertical_bias="0.0" />

            <View
                android:id="@+id/view"
                android:layout_width="0dp"
                android:layout_height="1dp"
                android:layout_marginTop="8dp"
                android:background="@color/colorPrimaryDark"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/about_us_connect"
                app:layout_constraintVertical_bias="0.0" />

            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/mail"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginEnd="8dp"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:scaleType="fitCenter"
                app:backgroundTint="@color/colorPrimary"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="0.21"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/view"
                app:layout_constraintVertical_bias="0.0"
                app:srcCompat="@drawable/email" />

            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/facebook"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginLeft="32dp"
                android:layout_marginStart="32dp"
                android:backgroundTint="@color/colorPrimary"
                android:scaleType="fitCenter"
                app:layout_constraintLeft_toRightOf="@+id/mail"
                app:layout_constraintTop_toTopOf="@+id/mail"
                app:srcCompat="@drawable/facebook_box" />

            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/youtube"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginLeft="32dp"
                android:layout_marginStart="32dp"
                android:layout_marginTop="2dp"
                android:scaleType="fitCenter"
                app:backgroundTint="@color/colorPrimary"
                app:layout_constraintLeft_toRightOf="@+id/facebook"
                app:layout_constraintTop_toTopOf="@+id/facebook"
                app:srcCompat="@drawable/youtube_play" />

            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/playstore"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="16dp"
                android:scaleType="fitCenter"
                app:backgroundTint="@color/colorPrimary"
                app:layout_constraintTop_toBottomOf="@+id/mail"
                app:srcCompat="@drawable/googleplay"
                android:layout_marginLeft="0dp"
                app:layout_constraintLeft_toLeftOf="@+id/mail"
                android:layout_marginRight="0dp"
                app:layout_constraintRight_toRightOf="@+id/mail" />

            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/website"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:scaleType="fitCenter"
                app:backgroundTint="@color/colorPrimary"
                app:layout_constraintBottom_toBottomOf="@+id/playstore"
                app:layout_constraintTop_toTopOf="@+id/playstore"
                app:srcCompat="@drawable/web_link"
                android:layout_marginLeft="0dp"
                app:layout_constraintLeft_toLeftOf="@+id/facebook"
                android:layout_marginRight="0dp"
                app:layout_constraintRight_toRightOf="@+id/facebook" />

            <android.support.v7.widget.AppCompatImageButton
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginLeft="0dp"
                app:layout_constraintLeft_toLeftOf="@+id/youtube"
                app:layout_constraintBottom_toBottomOf="@+id/website"
                android:layout_marginBottom="0dp"
                android:layout_marginRight="0dp"
                app:layout_constraintRight_toRightOf="@+id/youtube"
                app:layout_constraintTop_toTopOf="@+id/website"
                android:layout_marginTop="0dp"
                android:src="@drawable/phone"
                android:backgroundTint="@color/colorPrimary"
                android:scaleType="fitXY"/>

            <android.support.v7.widget.AppCompatTextView
                android:id="@+id/about_us_reach"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="32dp"
                android:gravity="center"
                android:text="Reach Us"
                android:textAlignment="center"
                android:textColor="@color/colorWhite"
                android:textSize="20sp"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/website"
                app:layout_constraintVertical_bias="0.0" />

            <View
                android:id="@+id/view_reach"
                android:layout_width="0dp"
                android:layout_height="1dp"
                android:layout_marginTop="8dp"
                android:background="@color/colorPrimaryDark"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/about_us_reach"
                app:layout_constraintVertical_bias="0.0" />

            <android.support.v7.widget.AppCompatImageButton
                android:id="@+id/map_view"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:layout_marginBottom="8dp"
                android:layout_marginEnd="8dp"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginStart="8dp"
                android:layout_marginTop="8dp"
                android:scaleType="fitCenter"
                app:backgroundTint="@color/colorPrimary"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toRightOf="parent"
                app:layout_constraintRight_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/view_reach"
                app:layout_constraintVertical_bias="0.0"
                app:srcCompat="@drawable/google_maps" />

            <android.support.v7.widget.AppCompatTextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="BVM Engineering College, Opp, Shastri Maidan, Mota Bazaar, Vallabh Vidhyanagar, Anand, Gujarat 388120, India"
                android:textAlignment="center"
                android:textColor="@color/colorWhite"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/map_view"
                app:layout_constraintVertical_bias="0.0" />
        </android.support.constraint.ConstraintLayout>

    </ScrollView>
</android.support.constraint.ConstraintLayout>


Solution

  • Carefully observe your Toolbar code:

    <android.support.v7.widget.Toolbar
            android:id="@+id/about_us_toolbar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
    

    Output 1:

    enter image description here


    Look at the 4 constraints on the Toolbar:

    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    

    This would cause the Toolbar to be centred inside the parent. And since the scroll view is constrained to be below the toolbar, it cannot scroll all it's contents after the top of the scroll touches the top toolbar.

    Remove this constraint:

    app:layout_constraintBottom_toBottomOf="parent"
    

    Now your new Toolbar code would be:

    <android.support.v7.widget.Toolbar
                android:id="@+id/about_us_toolbar"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:theme="@style/AppTheme.AppBarOverlay"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.0"
                app:popupTheme="@style/AppTheme.PopupOverlay" />
    

    Output 2:

    enter image description here