ANDROID: Come rendere scrollabile un ConstraintLayout

In questo articolo vedremo come trasformare un ConstraintLayout in una view che consente lo scorrimento del contenuto in eccesso.

Il ConstraintLayout di Android consente di creare complessi layout responsive mantenendo la struttura gerarchica tipica delle view Android. Questo componente è disponibile in una API Library compatibile con la versione Android 2.3 ( API Level 9 ) e successive.

1. Importiamo ConstraintLayout

Apriamo il file build.gradle nel nostro progetto ed assicuriamoci di aver aggiunto maven.google.com:

repositories {
    google()
}

Dichiariamo infine la dipendenza nel file build.gradle come mostrato nell’esempio seguente:

dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
}

2. Rendiamo scrollabile ConstraintLayout

Quandro utilizziamo un ConstraintLayout che contiene del contenuto che eccede lo schermo dell’utente, possiamo consentire all’utente di effettuare uno scroll del contenuto con il layout seguente:

<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:layout_width="match_parent"
  android:layout_height="match_parent">

  <android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

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

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

  <android.support.v4.widget.NestedScrollView         
      android:layout_width="match_parent"         
      android:layout_height="match_parent"         
      app:layout_behavior="@string/appbar_scrolling_view_behavior">         
      <android.support.constraint.ConstraintLayout                            
        android:layout_width="match_parent"             
        android:layout_height="match_parent">      

          <!-- YOUR SCROLLABLE CONTENT HERE -->   

      </android.support.constraint.ConstraintLayout>     
  </android.support.v4.widget.NestedScrollView> 
</android.support.design.widget.CoordinatorLayout>

Il risultato ottenuto è che tutto il contenuto che codifichiamo al posto di <!– YOUR SCROLLABLE CONTENT HERE –> si potrà scrorrere verticalmente nel caso in cui eccede la dimensione dello schermo dell’utente.

Fonte: StackOverflow: Android – How to make a scrollable ConstraintLayout