web-dev-qa-db-ja.com

ランタイムで「Android:layout_below」をプログラムで設定できますか?

実行時にRelativeLayoutを作成するときに、Android:layout_belowに相当するものをプログラムで設定することは可能ですか?

193
AlanH

はい:

RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.BELOW, R.id.below_id);
viewToLayout.setLayoutParams(params);

最初に、コードは高さと幅を指定して新しいレイアウトパラメーターを作成します。 addRuleメソッドは、xmlと同等のAndroid:layout_belowを適切に追加します。次に、これらのパラメーターを取得するビューでView#setLayoutParamsを呼び出すだけです。

445
Rich Schuler

または、ビューの現在のレイアウトパラメーターを使用して変更できます。

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);
138
jackofallcode

@jackofallcodeの回答は正しいですが、1行で記述できます。

((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
6
CoolMind