简体   繁体   中英

ConstraintLayout inside ScrollView or NestedScrollView won't scroll

I am fairly new to ConstraintLayout and am trying to convert my UI to a responsive layout to support different screen sizes. However, I am having trouble with my ScrollView scrolling when the inner layout is a ConstraintLayout. Even when I change the ScrollView to NestedScrollView it still won't scroll. I tried several solutions of many asking the same question and none of them seemed to have worked.

<android.support.v4.widget.NestedScrollView
     android:id="@+id/list"
     android:layout_width="0dp"
     android:layout_height="0dp"
     android:layout_marginBottom="5dp"
     android:fillViewport="true"
     app:layout_constrainedHeight="true"
     app:layout_constraintBottom_toTopOf="@+id/logo"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/refresh_text">

          <android.support.constraint.ConstraintLayout
               android:id="@+id/innerLayout"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               app:layout_constraintEnd_toEndOf="parent"
               app:layout_constraintStart_toStartOf="parent"
               app:layout_constraintTop_toTopOf="parent">

               <android.support.constraint.ConstraintLayout
                   android:id="@+id/innerLayout2"
                   android:layout_width="0dp"
                   android:layout_height="0dp"
                   android:background="@color/light_gray"
                   app:layout_constraintBottom_toTopOf="@+id/key_constraint_layout"
                   app:layout_constraintEnd_toEndOf="parent"
                   app:layout_constraintHeight_percent=".1"
                   app:layout_constraintStart_toStartOf="parent"
                   app:layout_constraintTop_toTopOf="parent">

                   <TextView
                       android:id="@+id/status_date_text"
                       android:layout_width="wrap_content"
                       android:layout_height="match_parent"
                       android:gravity="center_vertical"
                       android:layout_marginTop="5dp"
                       android:layout_marginBottom="5dp"
                       android:paddingStart="10dp"
                       android:paddingEnd="10dp"
                       android:text="Status Date"
                       android:textSize="20sp"   
                       app:layout_constrainedHeight="true"
                       app:layout_constrainedWidth="true"
                       app:layout_constraintLeft_toLeftOf="parent"
                       app:layout_constraintTop_toTopOf="parent" />

                  <TextView
                      android:id="@+id/status_date_value"
                      android:layout_width="wrap_content"
                      android:layout_height="match_parent"
                      android:paddingStart="10dp"
                      android:paddingEnd="10dp"
                      android:text="-------"
                      android:gravity="end|center_vertical"
                      android:textSize="20sp"
                      app:layout_constrainedHeight="true"
                      app:layout_constrainedWidth="true"
                      app:layout_constraintHorizontal_bias="0.70"
                      app:layout_constraintLeft_toLeftOf="parent"
                      app:layout_constraintRight_toRightOf="parent"
                      app:layout_constraintTop_toTopOf="parent" />
          </android.support.constraint.ConstraintLayout>
          <!--Other inner layouts are children of innerLayout based on innerLayout2 -->
     </android.support.constraint.ConstraintLayout>
<android.support.v4.widget.NestedScrollView>

What am I doing wrong?

This jumps out at me as the likely cause of your problem:

 <android.support.constraint.ConstraintLayout android:id="@+id/innerLayout" android:layout_width="match_parent" android:layout_height="match_parent" 

The single child of a scrolling view should always have either a fixed height or a wrap_content height.

The idea of scrolling views is that they hold a single child that is too large to fit on the screen by itself. If you are defining the single child to be match_parent height, then there's nothing to scroll, because the child is no larger than the scrolling view.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM