编程更改约束布局中的高度?

问题描述:

我有一个简单的布局:一个固定高度的TextView,三个ImageView对象被锚定到视图的底部。编程更改约束布局中的高度?

enter image description here

我如何编程方式更改每个ImageViews的高度,使他们的一些范围(10dp,16DP TextView的下面)内变化?具体来说,我的活动得到一个百分比列表(介于0和1之间),表示这些“酒吧”应占用多少垂直空间。

我已经尝试没有成功如下:

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

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

你会从你想要更改的元素中获得ConstraintSet,并对它们进行调整。有关如何操作,请参阅此答案:https://stackoverflow.com/a/40028802/4232337 – NSimon

如果“高度”你的意思是ImageView的绝对顶部到底部的尺寸,你可以做以下翻一番,达到的高度ImageView。您可以将高度设置为所需的值。

ImageView iv = (ImageView) findViewById(R.id.imageView); 
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) iv.getLayoutParams(); 
lp.height = lp.height * 2; 
iv.setLayoutParams(lp); 

请参阅ConstraintLayout.LayoutParams

但是,如果“高度”你的意思是ImageView的垂直位置,你可以做以下改变ImageView的垂直偏差(假设您正在使用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); 

setVerticalBias

还有其他方法可以移动关于布局的ImageView,但这取决于您的布局如何设置。