2017-10-05 15 views
0

私は単純なレイアウトを持っています:3つのImageViewオブジェクトがビューの下部に固定された固定高さTextView。制約レイアウトの高さをプログラムで変更しますか?

enter image description here

彼らはいくつかの範囲(10dp、TextViewの下に16dp)内で変化するので、どのように私はプログラム的ImageViewsのそれぞれの高さを変更できますか?具体的には、私のアクティビティでは、それぞれのバーがどれくらいの大きさを占めるかを表すパーセンテージ(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

答えて

3

「高さ」であなたがImageViewの絶対的なトップツーボトム寸法を意味し、あなたはANの高さに倍増する次の操作を行うことができた場合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の垂直位置を意味し、「高さ」によるならば、あなたは(あなたが ConstraintLaytoutを使用していると仮定して) ImageViewの垂直方向のバイアスを変更するには、次のことが可能です。

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

関連する問題