Comment puis-je définir la largeur ou la hauteur réelle sur 0 dans ConstraintLayout
par programme via ses LayoutParams
depuis le fait que ConstraintLayot.LayoutParams .MATCH_CONSTRAINT = 0
?
Je souhaite utiliser dans mon code quelque chose comme ceci:
view.getLayoutParams().width = 0; view.requestLayout();
3 Réponses :
si vous voulez changer la largeur en MATCH_CONSTRAINT
, vous devez définir la mise en page avec une contrainte horizontale
layout_constraintStart_toStartOf
ou layout_constraintStart_toEndOf
et
layout_constraintEnd_toEndOf
ou layout_constraintEnd_toStartOf
Où ai-je dit que je voulais le définir comme MATCH_CONSTRAINT? Je veux mettre à 0 ...
Vous devez définir à la fois layout_constraintStart_toStartOf & layout_constraintEnd_toEndOf alors le MATCH_CONSTRAINT peut fonctionner
Si par "hauteur" vous entendez la dimension absolue de haut en bas de l'ImageView, vous pouvez faire ce qui suit pour doubler la hauteur d'une ImageView. Vous pouvez définir la hauteur à la valeur souhaitée.
ImageView iv = (ImageView) findViewById(R.id.imageView); ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) iv.getLayoutParams(); lp.height = 0 ; iv.setLayoutParams(lp);
Voir ConstraintLayout.LayoutParams.
Je veux vraiment le faire 0
voici un exemple de code à essayer, cela fonctionne pour moi
val params = ConstraintLayout.LayoutParams( ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.WRAP_CONTENT ) val space16 = binding.root.resources.getDimensionPixelOffset(R.dimen.space_16) params.setMargins(space16, 0, 0, 0) /*app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/imgIcon1" app:layout_constraintTop_toTopOf="parent"*/ params.bottomToBottom = ConstraintLayout.LayoutParams.PARENT_ID params.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID params.startToEnd = binding.imgIcon1.id params.topToTop = ConstraintLayout.LayoutParams.PARENT_ID binding.containerBottom.layoutParams = params