Android – comment créer une contrainte de défilement

Je veux faire une mise en page qui me permette de faire défiler en utilisant la disposition des contraintes, mais je ne sais pas comment s’y prendre. la défilement doit-elle être le parent de la contrainte de contrainte comme ceci?

    

Ou l’inverse? Peut-être que quelqu’un peut me diriger vers un bon tutoriel ou donner un exemple, je ne peux pas en trouver un.

Aussi, je ne sais pas si c’est un bug ou une configuration que je n’ai pas configurée mais j’ai vu des images comme celle- ci où il y a des composants en dehors du plan “rectangle bleu” mais ils sont visibles, alors que de mon côté placer un composant sur “l’espace blanc” Je ne peux pas le voir ou le déplacer n’importe où, et il apparaît dans l’arborescence des composants.

METTRE À JOUR

J’ai trouvé un moyen de faire défiler la disposition de la contrainte dans l’outil de conception, en utilisant une ligne direcsortingce horiontal pour pousser la bordure de la structure de contrainte et l’étendre au-delà du périphérique. ancrer les composants.

Il semble que cela fonctionne, je ne sais pas avec quelle dépendance vous travailliez mais dans celle-ci

 comstack 'com.android.support.constraint:constraint-layout:1.0.2' 

Travaille, c’est ce que j’ai fait

            

Scroll Top entrer la description de l'image ici

Défilement bas entrer la description de l'image ici

Pour créer une mise en page déroulante, la mise en page est correcte. Il ne sera pas défilable jusqu’à ce qu’il y ait une raison de faire défiler (comme dans toute autre disposition). Donc, ajoutez suffisamment de contenu et celui-ci sera défilable, comme avec toute disposition (linéaire, relative, etc.). Cependant, vous ne pouvez pas faire défiler correctement en Blueprint ou en mode Design lors de la conception avec ConstraintLayout et ScrollView.

Sens:

Vous pouvez faire un ConstraintLayout défilant, mais il ne défilera pas correctement dans l’éditeur en raison d’un bogue / scénario qui n’a pas été pris en compte. Mais même si le défilement ne fonctionne pas dans l’éditeur, cela fonctionne sur les appareils. (J’ai fait plusieurs défilement COnstraintLayouts, donc je l’ai testé)

Remarque

Concernant votre code Il manque une balise de fermeture à ScrollView, je ne sais pas si c’est le cas dans le fichier ou s’il s’agit d’un manque de copier-coller, mais vous voudrez peut-être l’examiner.

Il existe un type de contrainte qui casse la fonction de défilement à partir de la vue de défilement du parent:

Assurez-vous simplement que vous n’utilisez pas cette contrainte sur une vue lorsque vous voulez que votre ConstraintLayout puisse défiler avec ScrollView :

 app:layout_constraintBottom_toBottomOf=“parent” 

Si vous les supprimez, votre parchemin devrait fonctionner.

vous devez entourer ma disposition de contraintes avec une balise ScrollView et lui donner la propriété android: isScrollContainer = “true”.

Pour résumer, vous envelopper essentiellement votre vue android.support.constraint.ConstraintLayout dans un ScrollView dans le texte du fichier *.xml associé à votre mise en page.

Exemple activity_sign_in.xml

        

Exemple de fin

Note 1: que les barres de défilement n’apparaissent que si un retour à la ligne est nécessaire, y compris le clavier.

Note 2: Ce ne serait pas non plus une mauvaise idée de vous assurer que votre contraintLayout est assez grand pour atteindre le bas et les côtés de n’importe quel écran, en particulier si vous avez un arrière-plan, car cela garantit . Vous pouvez le faire avec des entretoises si rien d’autre.

Il existe un bogue dans la version 2.2 qui rend impossible le défilement du ConstraintLayout. Je suppose que ça existe toujours. Vous pouvez également utiliser LinearLayout ou RelativeLayout.

Aussi, consultez: Est-il possible de mettre une disposition de contrainte dans un ScrollView .

Constraintlayout est la valeur par défaut pour une nouvelle application. Je “apprends à Android” maintenant et j’ai eu du mal à comprendre comment gérer le code “échantillon” par défaut pour faire défiler quand un clavier est en place. J’ai vu beaucoup d’applications où je dois fermer le clavier pour cliquer sur “soumettre” et parfois ça ne disparaît pas. En utilisant cette hiérarchie [ScrollView / ContraintLayout / Fields], cela fonctionne très bien maintenant. De cette façon, nous pouvons bénéficier des avantages et de la facilité d’utilisation de ConstraintLayout dans une vue déroulante.

Pour compléter les réponses précédentes, j’ajoute l’exemple suivant, qui prend également en compte l’utilisation de l’AppBar. Avec ce code, l’éditeur de conception d’Android Studio semble fonctionner correctement avec le ConstraintLayout.