编程更改约束布局中的高度?
问题描述:
我有一个简单的布局:一个固定高度的TextView,三个ImageView对象被锚定到视图的底部。编程更改约束布局中的高度?
我如何编程方式更改每个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);
答
如果“高度”你的意思是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);
还有其他方法可以移动关于布局的ImageView
,但这取决于您的布局如何设置。
你会从你想要更改的元素中获得ConstraintSet,并对它们进行调整。有关如何操作,请参阅此答案:https://stackoverflow.com/a/40028802/4232337 – NSimon