I have put Constraint layout inside a Nested Scrollview to make the screen scrollable, but it doesn't scroll.
This is my XML:
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
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_height="match_parent"
android:layout_width="match_parent"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/dark_blue"
tools:context=".SignUpActivity"
>
<ImageView
android:id="@+id/ivLogo"
android:layout_width="@dimen/_148sdp"
android:layout_height="@dimen/_60sdp"
android:src="@drawable/logo_voodlee"
app:layout_constraintVertical_bias="0.08"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name as on Pan Card"
android:visibility="visible"
app:fontFamily="@font/poppins_regular"
android:textColor="@color/fade_green"
android:textSize="@dimen/_11ssp"
app:layout_constraintVertical_bias="0.285"
app:layout_constraintHorizontal_bias="0.135"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name as on Pan Card"
android:gravity="left"
android:inputType="textVisiblePassword"
android:background="@drawable/bg_edittext_thin_line_bright_green"
android:layout_marginLeft="@dimen/_20sdp"
android:layout_marginRight="@dimen/_20sdp"
android:lineSpacingExtra="@dimen/_3sdp"
app:fontFamily="@font/poppins_regular"
android:textColor="@color/bright_green"
android:textColorHint="@color/fade_green"
android:textSize="@dimen/dimen_20dp"
android:importantForAutofill="no"
app:layout_constraintVertical_bias="0.31"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/tvEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email"
android:visibility="visible"
app:fontFamily="@font/poppins_regular"
android:textColor="@color/fade_green"
android:textSize="@dimen/_11ssp"
app:layout_constraintVertical_bias="0.4"
app:layout_constraintHorizontal_bias="0.091"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<EditText
android:id="@+id/etEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textVisiblePassword"
android:hint="Email"
android:gravity="left"
android:background="@drawable/bg_edittext_thin_line_bright_green"
android:lineSpacingExtra="@dimen/_3sdp"
app:fontFamily="@font/poppins_regular"
android:layout_marginLeft="@dimen/_20sdp"
android:layout_marginRight="@dimen/_20sdp"
android:textColor="@color/bright_green"
android:textColorHint="@color/fade_green"
android:textSize="@dimen/dimen_20dp"
android:importantForAutofill="no"
app:layout_constraintVertical_bias="0.43"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/tvErrorMsgEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:text="* Please enter valid email address"
android:textSize="@dimen/_10ssp"
android:textColor="@color/voodlee_red"
app:fontFamily="@font/poppins_regular"
android:layout_marginTop="@dimen/_4sdp"
app:layout_constraintHorizontal_bias=".1375"
app:layout_constraintVertical_bias="0.47"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/tvMob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mobile Number"
android:gravity="center_vertical"
android:visibility="visible"
app:fontFamily="@font/poppins_regular"
android:textColor="@color/fade_green"
android:textSize="@dimen/_11ssp"
app:layout_constraintVertical_bias="0.515"
app:layout_constraintHorizontal_bias="0.115"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<EditText
android:id="@+id/etMob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:hint="Mobile Number"
android:gravity="left"
android:lineSpacingExtra="@dimen/_3sdp"
android:layout_marginLeft="@dimen/_20sdp"
android:layout_marginRight="@dimen/_20sdp"
android:textColor="@color/bright_green"
android:textColorHint="@color/fade_green"
android:textSize="@dimen/dimen_20dp"
app:fontFamily="@font/poppins_regular"
android:background="@drawable/bg_edittext_thin_line_bright_green"
android:importantForAutofill="no"
app:layout_constraintVertical_bias="0.55"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/tvErrorMsgMobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:text="* Please enter valid mobile number"
android:textSize="@dimen/_10ssp"
android:textColor="@color/voodlee_red"
app:fontFamily="@font/poppins_regular"
android:layout_marginTop="@dimen/_4sdp"
app:layout_constraintHorizontal_bias=".135"
app:layout_constraintVertical_bias="0.5875"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/tvAgree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="By clicking Proceed you agree to"
android:textSize="@dimen/dimen_14dp"
android:textColor="@color/bright_green"
app:fontFamily="@font/poppins_regular"
android:gravity="center"
app:layout_constraintVertical_bias="0.6575"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/tvAgree2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="the"
android:textSize="@dimen/dimen_14dp"
android:textColor="@color/bright_green"
app:fontFamily="@font/poppins_regular"
android:gravity="center"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintHorizontal_bias="0.125"
app:layout_constraintLeft_toLeftOf="@id/tvAgree"
app:layout_constraintRight_toRightOf="@id/tvAgree"
app:layout_constraintTop_toBottomOf="@id/tvAgree"
app:layout_constraintBottom_toBottomOf="parent"
/>
<TextView
android:id="@+id/tvTnc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Terms and conditions"
android:textColor="@color/text_highlight"
android:textSize="@dimen/dimen_14dp"
app:fontFamily="@font/poppins_regular"
app:layout_constraintVertical_bias="0.01"
app:layout_constraintHorizontal_bias="0.2"
app:layout_constraintLeft_toRightOf="@id/tvAgree2"
app:layout_constraintRight_toRightOf="@id/tvAgree"
app:layout_constraintTop_toBottomOf="@id/tvAgree"
app:layout_constraintBottom_toBottomOf="parent"
/>
<Button
android:id="@+id/btnNextSignUp"
android:layout_width="match_parent"
android:layout_height="@dimen/_36sdp"
android:background="@drawable/bg_btn_proceed_disabled"
android:layout_margin="@dimen/_25sdp"
android:text="Proceed"
android:textColor="@color/dark_blue"
android:textAllCaps="false"
android:textSize="@dimen/dimen_20dp"
android:onClick="onClickNext"
android:fontFamily="@font/poppins_semi_bold"
android:foreground="?attr/selectableItemBackground"
app:layout_constraintVertical_bias="0.825"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/tvAlreadyHave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_highlight"
android:text="Already have an account?"
app:fontFamily="@font/poppins_regular"
android:textSize="@dimen/_11sdp"
android:textStyle="bold"
app:layout_constraintVertical_bias="0.87"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<!--Code for Progressbar at bottom of screen-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clProgressSignUp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
app:layout_constraintVertical_bias="0.96"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
>
<ImageView
android:id="@+id/ivFlowLine"
android:layout_width="@dimen/_210sdp"
android:layout_height="wrap_content"
android:scaleType="fitXY"
app:layout_constraintVertical_bias=".425"
app:layout_constraintHorizontal_bias=".425"
android:src=
"@drawable/bg_flow_line_fade_green"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<ImageView
android:id="@+id/ivStartCircle"
android:layout_width="@dimen/_9sdp"
android:layout_height="@dimen/_9sdp"
android:src="@drawable/bg_flow_circle_bright_green"
app:layout_constraintRight_toLeftOf="@id/ivFlowLine"
app:layout_constraintTop_toTopOf="@id/ivFlowLine"
app:layout_constraintBottom_toBottomOf="@id/ivFlowLine"/>
<com.example.voodlee.GradualGrowingLine
android:id="@+id/ivOrangeLineSignUp"
android:layout_width="@dimen/_14sdp"
android:layout_height="@dimen/_3sdp"
app:startingPoint="0"
app:layout_constraintVertical_bias=".425"
app:layout_constraintLeft_toLeftOf="@id/ivStartCircle"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<ImageView
android:id="@+id/ivCircle2"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
android:layout_marginLeft="@dimen/_22sdp"
app:layout_constraintVertical_bias=".4"
app:layout_constraintHorizontal_bias="0.43"
android:src=
"@drawable/bg_flow_circle_black"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<ImageView
android:id="@+id/ivCircle5"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
app:layout_constraintVertical_bias=".4"
android:src=
"@drawable/bg_flow_circle_black"
app:layout_constraintHorizontal_bias="0.85"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/tvSignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SignUp"
android:textSize="@dimen/_9ssp"
android:textColor="@color/fade_green"
app:fontFamily="@font/poppins_regular"
app:layout_constraintLeft_toLeftOf="@id/ivCircle2"
app:layout_constraintRight_toRightOf="@id/ivCircle2"
app:layout_constraintTop_toBottomOf="@id/ivCircle2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Autosaving"
android:textSize="@dimen/_9sdp"
android:textColor="@color/fade_green"
app:fontFamily="@font/poppins_regular"
app:layout_constraintLeft_toLeftOf="@id/ivCircle5"
app:layout_constraintRight_toRightOf="@id/ivCircle5"
app:layout_constraintTop_toBottomOf="@id/ivCircle5"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl2ProgressSignUp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintVertical_bias="0.96"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
>
<ImageView
android:id="@+id/iv2FlowLine"
android:layout_width="@dimen/_210sdp"
android:layout_height="wrap_content"
android:scaleType="fitXY"
app:layout_constraintVertical_bias=".425"
app:layout_constraintHorizontal_bias=".425"
android:src=
"@drawable/bg_flow_line_fade_green"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<ImageView
android:id="@+id/iv2StartCircle"
android:layout_width="@dimen/_9sdp"
android:layout_height="@dimen/_9sdp"
android:src="@drawable/bg_flow_circle_bright_green"
app:layout_constraintRight_toLeftOf="@id/iv2FlowLine"
app:layout_constraintTop_toTopOf="@id/iv2FlowLine"
app:layout_constraintBottom_toBottomOf="@id/iv2FlowLine"/>
<ImageView
android:id="@+id/iv2OrangeLine"
android:layout_width="@dimen/_14sdp"
android:layout_height="@dimen/_3sdp"
app:layout_constraintVertical_bias="0.425"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src=
"@drawable/bg_flow_line_green_2"
app:layout_constraintLeft_toLeftOf="@id/iv2StartCircle"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<com.example.voodlee.GradualGrowingLine
android:id="@+id/iv2OrangeLineSignUp"
android:layout_width="@dimen/_50sdp"
android:layout_height="@dimen/_3sdp"
app:startingPoint="14"
app:layout_constraintVertical_bias=".425"
app:layout_constraintLeft_toLeftOf="@id/iv2StartCircle"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<ImageView
android:id="@+id/iv2Circle2"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
android:layout_marginLeft="@dimen/_22sdp"
app:layout_constraintVertical_bias=".4"
app:layout_constraintHorizontal_bias="0.43"
android:src=
"@drawable/bg_flow_circle_black"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<ImageView
android:id="@+id/iv2Circle5"
android:layout_width="@dimen/_16sdp"
android:layout_height="@dimen/_16sdp"
app:layout_constraintVertical_bias=".4"
android:src=
"@drawable/bg_flow_circle_black"
app:layout_constraintHorizontal_bias="0.85"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/tv2SignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
androidø:text="SignUp"
android:textSize="@dimen/_9ssp"
android:textColor="@color/fade_green"
app:fontFamily="@font/poppins_regular"
app:layout_constraintLeft_toLeftOf="@id/iv2Circle2"
app:layout_constraintRight_toRightOf="@id/iv2Circle2"
app:layout_constraintTop_toBottomOf="@id/iv2Circle2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Autosaving"
android:textSize="@dimen/_9sdp"
android:textColor="@color/fade_green"
app:fontFamily="@font/poppins_regular"
app:layout_constraintLeft_toLeftOf="@id/iv2Circle5"
app:layout_constraintRight_toRightOf="@id/iv2Circle5"
app:layout_constraintTop_toBottomOf="@id/iv2Circle5"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
To be sure if Constraint layout really scrolls with Scrollview/Nested Scrollview, I created a demo project with simple layout with Constraint layout within Scrollview, and it DID scroll.
But I'm not sure why my screen with above layout doesn't scroll. Please help me figure out the issue.
Solved it by removing android: fillViewPort = "true"
attribute from NestedScrollview, and adding an empty view at the end of layout like this:
<View
android:id="@+id/view1"
android:layout_width="match_parent"
android:layout_height="@dimen/_20sdp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/clProgressSignUp"
/>