BeginnerLayoutTous les articles

Comment faire défiler vos pages avec le ScrollView

 

Salut les amis, c’est Sébastien. Aujourd’hui on se retrouve pour une nouvelle vidéo sur les Layouts et on va parler des ScrollView. Vous allez me demander qu’est-ce qu’un ScrollView et bien je vais vous le dire. C’est un Layout qui permet de faire défiler ce que j’ai à l’écran. Si par exemple vous mettez trop d’éléments à l’écran et qu’il n’y a pas assez de place pour les afficher, le ScrollView va permettre de les faire défiler avec le doigt. Comme quand vous faites une recherche Google avec votre téléphone et que vous n’avez pas tout sur l’écran, vous pouvez faire défiler la recherche pour voir les résultats. Le ScrollView va nous permettre de faire cela.

 

Création du ScrollView

Alors aujourd’hui on va modifier le fichier « activity_main.xml ». J’ai créé une nouvelle application vide et on est donc sur le Hello World. On va modifier ce fichier XML. Vous allez remplacer le ConstraintLayout par un ScrollView donc vous faites bien attention que les balises se sont bien ouvertes et fermées. Android studio nous a automatiquement modifier la balise de fermeture quand j’ai modifié l’ouverture. Ensuite vous allez supprimer le TextView.

Alors il faut faire attention parce que dans un ScrollView on peut mettre qu’un seul nœud fils. Par exemple vous ne pouvez pas mettre 2 TextView, ni mettre plusieurs boutons parce que le Scrollview n’autorise qu’un seul nœud fils. Donc en général ce qu’on fait c’est qu’on met un layout comme le fils du Scrollview.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    

</ScrollView>

Création du LinearLayout et de l’ImageView

Ici on va mettre un LinearLayout avec comme attribut en largeur et hauteur « match_parent » et à l’intérieur on va mettre plusieurs images. Pour mettre une image il faut utiliser la balise Imageview avec en largeur et hauteur « wrap_content ». De plus, vous allez tout de suite rajouter l’attribut « android:adjustViewBounds » qui va permettre de bien ajuster la taille des images à la taille de l’écran avec comme valeur « true ». Alors pour ajouter des images sur une ImageView c’est l’attribut « src » donc vous mettez « android:src » et comme valeur on va mettre le chemin vers l’image.

Ajouter des images à l’application

Comment ajouter une image à notre projet ? Toutes les images iront dans le dossier res/drawable. Pour le moment dans notre dossier on a encore aucune image, il faut aller les chercher sur votre ordinateur.  Copiez-collez les images dans le dossier res/drawable avec « Ctrl-c Ctrl-v ». On a nos 5 images qui sont apparues dans notre dossier drawable.

Le nom des images va de « image1 » à « image5 » donc dans notre ImageView on va assigner l’image à l’attribut « src » avec la valeur « @drawable/image1 ». L’image est bien apparue sur notre application.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/Image1"
            android:adjustViewBounds="true"/>

    </LinearLayout>

</ScrollView>

Faite un copier-coller pour faire ça avec les 5 images. Vous modifiez bien l’attribut « src » pour mettre différentes images et vous pensez bien à mettre comme attribut pour le LinearLayout une orientation verticale parce que sinon ça va mettre les images les une à la suite horizontalement sauf que le Scrollview permet de faire défiler l’écran du haut vers le bas.

Donc la nous avons bien nos 5 images sur notre écran de preview d’Android et si vous utilisez la molette de votre souris vous allez pouvoir faire défiler l’écran et les images qui s’y trouve.

Je vous invite à exécuter ce code sur votre téléphone. Pour cela vous cliquez sur le petit bouton vert « Exécuter » en haut de votre écran et vous allez voir que vous allez pouvoir scroller avec votre doigt.

Je vous donne le code complet du fichier XML :

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image1" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image2" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image3" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image4" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/image5" />

    </LinearLayout>

</ScrollView>

Utilisation du ScrollView

Alors pour information on en a pas encore parlé mais certains widget autorisent déjà le scroll. C’est par exemple le cas d’une ListView. C’est une liste qui contient par défaut du texte et si vous rajouter beaucoup de texte et que ça dépasse la taille de l’écran vous allez, déjà de base, pouvoir scroller sur cette liste pour faire défiler le texte. Ainsi, si vous mettez une ListView à l’intérieur d’un ScrollView, il y aura un conflit entre les deux fonctionnalités qui permettent de scroller.

Android studio vous mettra probablement pas d’erreur mais quand vous testerez votre application ça fera des choses bizarres et ça ne marchera plus donc sachez que vous n’avez pas le droit de mettre un élément qui autorise le scroll à l’intérieur d’un Scrollview.

Conclusion

Donc aujourd’hui on a fait le tour des fonctionnalités d’un ScrollView. Il faut simplement retenir qu’un ScrollView n’a qu’un seul nœud fils qui peut être un Layout. Lors des prochaines vidéos nous aborderont un autre sujet, on arrêtera de parler des Layouts donc si vous voulez vous tenir informé de ce qui va sortir je vous invite à vous abonner à la chaîne.

Vous retrouverez comme d’habitude le code source d’aujourd’hui dans la description de la vidéo. En attendant je vous souhaite une bonne journée, salut !

 

Les ressources du projet :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *