J'ai une vue de mise en page de contrainte où j'ajoute des vues d'images circulaires et de texte de manière programmatique, Cependant, lorsque je fais cela, l'interface utilisateur n'est pas du tout affectée, je ne peux pas trouver l'erreur et je serais reconnaissant si quelqu'un pouvait m'aider avec ce problème.
J'utilise une fonction pour ajouter toutes les vues d'image et de texte à ma mise en page, après quoi j'appelle une autre fonction pour définir les contraintes dont j'ai besoin.
En ce qui concerne ma conception de l'interface utilisateur, je veux afficher les vues d'images comme un tableau composé de 3 colonnes, et les lignes sont déterminées pendant l'exécution, je le fais en les plaçant les unes à côté des autres et en dessous des autres si nécessaire en utilisant un ensemble de contraintes. Et au-dessus de chaque vue d'image se trouve le nom dans la vue de texte
Voici mon code :
private void initializeFriendsInImageViews(){
friendsImageViews=new ArrayList<ImageView>();
friendNamesTextViews=new ArrayList<TextView>();
//Initializing Layout params
ConstraintLayout.LayoutParams textViewLayoutParams = new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ConstraintLayout.LayoutParams circleImageViewLayoutParams = new ConstraintLayout.LayoutParams(220, 220);
//Declaring both views
CircleImageView friendPic;
TextView friendName;
for(int i=0; i<countFriends; i++) {
//Initializing both views
friendPic = new CircleImageView(getActivity());
friendName = new TextView(getActivity());
//Setting IDs
friendPic.setId(i);
friendName.setId(countFriends+i);
//Setting layout params
friendPic.setLayoutParams(circleImageViewLayoutParams);
friendName.setLayoutParams(textViewLayoutParams);
//Setting border
friendPic.setBorderColor(ContextCompat.getColor(getActivity(), R.color.border_grey));
friendPic.setBorderWidth(8);
//Load friend picture into imageview
Picasso.with(getActivity()).load(Uri.parse(friendsPicURLs.get(i))).transform(new CircleTransform()).into(friendPic);
//Load friend name into text view
friendName.setText(friendNames.get(i));
//add image view to list of image views
friendsImageViews.add(friendPic);
//add text view to list of text views
friendNamesTextViews.add(friendName);
//Add image view to my layout
friendsConstraintLayout.addView(friendPic);
//Add text view to my layout
friendsConstraintLayout.addView(friendName);
}
addConstraints();
}
private void addConstraints(){
//Initializing constraint set
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(friendsConstraintLayout);
for (int i=0;i<countFriends;i++){
//positioning a new row of friends (circle image views)
if (i==0){
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.LEFT,friendsConstraintLayout.getId(),ConstraintSet.LEFT,15);
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.TOP,friendsConstraintLayout.getId(),ConstraintSet.TOP,15);
}
else if ((i+1)<=3){
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.LEFT,friendsImageViews.get(i-1).getId(),ConstraintSet.RIGHT);
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.TOP,friendsImageViews.get(i-1).getId(),ConstraintSet.TOP);
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.BOTTOM,friendsImageViews.get(i-1).getId(),ConstraintSet.BOTTOM);
}
else if ((i+1)>3){
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.LEFT,friendsImageViews.get(i-3).getId(),ConstraintSet.LEFT);
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.RIGHT,friendsImageViews.get(i-3).getId(),ConstraintSet.RIGHT);
constraintSet.connect(friendsImageViews.get(i).getId(),ConstraintSet.TOP,friendsImageViews.get(i-3).getId(),ConstraintSet.BOTTOM);
}
//positioning friend names
constraintSet.connect(friendNamesTextViews.get(i).getId(),ConstraintSet.LEFT,friendsImageViews.get(i).getId(),ConstraintSet.LEFT);
constraintSet.connect(friendNamesTextViews.get(i).getId(),ConstraintSet.RIGHT,friendsImageViews.get(i).getId(),ConstraintSet.RIGHT);
constraintSet.connect(friendNamesTextViews.get(i).getId(),ConstraintSet.BOTTOM,friendsImageViews.get(i).getId(),ConstraintSet.TOP);
}
//Apply Constraints
constraintSet.applyTo(friendsConstraintLayout);
}