web-dev-qa-db-ja.com

制約レイアウトの高さをプログラムで変更しますか?

私は単純なレイアウトを持っています:ビューの下部に固定された3つのImageViewオブジェクトを持つ固定高TextView。

enter image description here

ある範囲(10dp、TextViewの下16dp)で変化するように、各ImageViewの高さをプログラムで変更するにはどうすればよいですか?具体的には、私のアクティビティは、各「バー」が占める垂直方向のスペースの量を表すパーセンテージのリスト(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);
9

「高さ」がImageViewの絶対上から下までの寸法を意味する場合、以下を実行してImageViewの高さを2倍にすることができます。高さを希望する値に設定できます。

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を移動する方法は他にもありますが、レイアウトの設定方法によって異なります。

22
Cheticamp