Vous devrez utiliser un ConstraintSet
appliqué au ImageView
pour le centrer. La documentation pour ConstraintSet
peut être trouvée here.
Cette classe vous permet de définir par programmation un ensemble de contraintes à utiliser avec ConstraintLayout. Il vous permet de créer et d'enregistrer des contraintes et de les appliquer à un objet ConstraintLayout existant. ConstraintsSet peut être créé de différentes manières ...
Peut-être que la chose la plus délicate ici est comment la vue est centrée. Une bonne description de la technique de centrage est here.
Pour exemple, le code suivant suffit:
// Get existing constraints into a ConstraintSet
ConstraintSet constraints = new ConstraintSet();
constraints.clone(layout);
// Define our ImageView and add it to layout
ImageView imageView = new ImageView(this);
imageView.setId(View.generateViewId());
imageView.setImageResource(R.drawable.redlight);
layout.addView(imageView);
// Now constrain the ImageView so it is centered on the screen.
// There is also a "center" method that can be used here.
constraints.constrainWidth(imageView.getId(), ConstraintSet.WRAP_CONTENT);
constraints.constrainHeight(imageView.getId(), ConstraintSet.WRAP_CONTENT);
constraints.center(imageView.getId(), ConstraintSet.PARENT_ID, ConstraintSet.LEFT,
0, ConstraintSet.PARENT_ID, ConstraintSet.RIGHT, 0, 0.5f);
constraints.center(imageView.getId(), ConstraintSet.PARENT_ID, ConstraintSet.TOP,
0, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM, 0, 0.5f);
constraints.applyTo(layout);