私は単純なレイアウトを持っています:ビューの下部に固定された3つのImageViewオブジェクトを持つ固定高TextView。
ある範囲(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);
「高さ」が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
を移動する方法は他にもありますが、レイアウトの設定方法によって異なります。