Je dois changer la marge de la barre d’outils, qui était faite de ConstraintLayout, dans différents cas. J'ai essayé de le faire de la manière suivante
ConstraintLayout.LayoutParams newLayoutParams = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
ConstraintLayout.MarginLayoutParams layoutParams = new ConstraintLayout.MarginLayoutParams(newLayoutParams);
layoutParams.setMargins(0, 0, 0, 0);
toolbar.setLayoutParams(newLayoutParams);
mais dans le second cas, layoutParams.setMargins(16, 16, 16, 16);
ça n'a pas changé. Alors, quelqu'un peut-il donner un autre moyen ou indiquer l'erreur? Merci d'avoir passé du temps à mon problème.
J'ai essayé d'utiliser newLayoutParams.setMargins(54, 54, 54, 0);
, ce qui place les marges à gauche et à droite, mais je dois quand même y placer des marges.
Finalement, avec l'aide de @Aksh, j'ai trouvé mon erreur et résolu mon problème. Si quelqu'un le trouve utile, je mettrai mon code ci-dessous
ConstraintLayout.LayoutParams newLayoutParams = (ConstraintLayout.LayoutParams) toolbar.getLayoutParams();
newLayoutParams.topMargin = 0;
newLayoutParams.leftMargin = 0;
newLayoutParams.rightMargin = 0;
toolbar.setLayoutParams(newLayoutParams);
Une fois, j'ai modifié ConstraintLayout avec une ConstraintSet
pour modifier les éléments auxquels elle était liée. J'ai également changé la marge dans ce processus qui est le dernier paramètre de la méthode connect
:
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(layout);
constraintSet.connect(R.id.layout_id, ConstraintSet.START, R.id.layout_id2, ConstraintSet.END, 8);
constraintSet.applyTo(layout);
Peut-être que cela vous donne un autre indice pour trouver une solution?
Pour définir la marge comme si vous aviez créé un bouton, utilisez simplement setX (float x) ou setY (float y), même condition que vous pouvez appliquer avec vos problèmes
Button bt= new Button(this);
bt.setX(20.0);
bt.setY(20.0);
Tu pourrais vouloir essayer
ViewGroup.MarginLayoutParams params = yourConstraintLayout.getLayoutParams();
params.topMargin = x;
//others shows up in suggestion
Je ne l'ai pas essayé, mais cela devrait fonctionner, car ConstraintLayout est un ViewGroup.