=====Bonnes pratiques===== Tout est dans la documentation de ''Material Design 3''. https://m3.material.io/foundations/layout Dimension de la zone cliquable : minimum 48*48dp. Si le composant fait une taille inférieure, il faut que la zone en dehors du composant soit cliquable jusqu'à une dimension minimale de 48*48dp. =====Composants===== ====DrawerLayout==== Le DrawerLayout est un conteneur qui permet d'afficher une sorte de popup avec une liste d'action possible : des boutons ou des images. Le problème est que, parfois, on souhaite que l'action soit effectuée une fois que l'animation de disparition du DrawerLayout terminée et non pas directement depuis l'événement ''setOnClickListener''. La solution est de mettre l'action dans une variable ''Runnable''. drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerOpened(final View drawerView) { callDrawerClosed = () -> { // Action par défaut si le DrawerLayout est fermé sans cliquer sur une action. }; } @Override public void onDrawerClosed(final View drawerView) { callDrawerClosed.run(); } }); Et bien sûr ne pas oublier d'assigner l'action dans ''callDrawerClosed'' pour chaque action possible du ''DrawerLayout''. ====RelativeLayout==== Utiliser à la place ''ConstraintLayout''. ====ConstraintLayout==== Ce composant permet de placer des composants à distance régulière en eux. * Regrouper plusieurs composants entre eux Il faut pour cela placer un composant invisible dans la chaîne des widgets. Puis placer un composant avant et après ce composant invisible. Évidemment, il serait peut-être aussi beaucoup plus facile de placer un ''ConstraintLayout'' dans la chaîne et mettre les composants dans ce sous layout. [[https://stackoverflow.com/questions/64931533/constraint-layout-group-multiple-views-as-a-single-item-in-the-chain|Constraint Layout group multiple views as a single item in the chain]] {{ :lang:android:layout:android_-_constraint_layout_group_multiple_views_as_a_single_item_in_the_chain_-_stack_overflow_23_08_2023_11_12_08_.html |Archive du 20/11/2021 le 23/08/2023}} ====MotionScene==== Permet de faire des animations pilotables via la main. https://developer.android.com/develop/ui/views/animations/motionlayout https://developer.android.com/develop/ui/views/animations/motionlayout/carousel https://developer.android.com/develop/ui/views/animations/motionlayout/examples