约束布局不滚动

时间:2021-03-12 08:18:14

标签: android scroll android-constraintlayout android-scrollview

我将约束布局放在嵌套滚动视图中以使屏幕可滚动,但它不滚动。

这是我的 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>

为了确定约束布局是否真的使用 Scrollview/Nested Scrollview 滚动,我创建了一个带有简单布局的演示项目,在 Scrollview 中使用约束布局,并且它确实滚动了。

但我不知道为什么我上面布局的屏幕不滚动。请帮我找出问题所在。

2 个答案:

答案 0 :(得分:0)

通过从 NestedScrollview 中删除 android: fillViewPort = "true" 属性并在布局的末尾添加一个空视图来解决它,如下所示:

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

答案 1 :(得分:0)

请尝试使用以下结构来滚动 ConstraintLayout。

<LinearLayout>
   
    <androidx.core.widget.NestedScrollView>

        <androidx.constraintlayout.widget.ConstraintLayout>

          ......

        </androidx.constraintlayout.widget.ConstraintLayout>

     </androidx.core.widget.NestedScrollView>

<LinearLayout>