2017-10-05 1 views
0

J'ai une mise en page simple: un TextView à hauteur fixe avec trois objets ImageView ancrés au bas de la vue.Modifier la hauteur par programmation dans la disposition de contrainte?

enter image description here

Comment puis-je changer la hauteur de programmation chacun des ImageViews ils varient dans une certaine plage (10DP, 16DP en dessous du TextView)? Concrètement, mon activité obtient une liste de pourcentages (entre 0 et 1) représentant la quantité de cet espace vertical que chacune de ces «barres» devrait occuper.

J'ai essayé ce qui suit sans succès:

// No visible difference 
imgView.setMinHeight(newHeight); 

// No change to height, but horizontal constrained was messed up 
imgView.setLayoutParams(new LayoutParam(imgView.getWidth(), newHeight); 
+0

Vous obtiendrez le ConstraintSet à partir des éléments que vous souhaitez modifier, et les modifier. Reportez-vous à cette réponse pour obtenir un how-to: https://stackoverflow.com/a/40028802/4232337 – NSimon

Répondre

3

Si par « hauteur » vous dire la dimension supérieure à fond absolu du ImageView, vous pouvez faire ce qui suit pour doubler la hauteur d'un ImageView. Vous pouvez définir la hauteur à la valeur que vous voulez.

Voir ConstraintLayout.LayoutParams.

Mais, si par « hauteur » vous dire la position verticale du ImageView, vous pouvez faire ce qui suit pour changer le biais vertical de ImageView (en supposant que vous utilisez ConstraintLaytout):

ConstraintSet cs = new ConstraintSet(); 
ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.layout); 
cs.clone(layout); 
cs.setVerticalBias(R.id.imageView, 0.25f); 
cs.applyTo(layout); 

Voir setVerticalBias.

Il existe d'autres manières de déplacer un ImageView sur la disposition, mais cela dépend de la configuration de votre disposition.