プログラムで作成した相対レイアウトがあります。
RelativeLayout layout = new RelativeLayout( this );
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
この相対的なレイアウトに追加したいボタンが2つあります。しかし、問題は両方のボタンがRelatiiveLayoutの左側に重なって表示されていることです。
buttonContainer.addView(btn1);
buttonContainer.addView(btn2);
XmlのようにボタンのAndroid:layout_alignParentRight="true
"またはAndroid:layout_toLeftOf="@id/btn"
属性をプログラムで設定する方法を知りたいですか。
View.getLayoutParams
を使用してコードから任意のLayoutParams
にアクセスできます。あなたは、あなたがアクセスしているLayoutParams
をよく知っている必要があります。これは通常、含まれているViewGroup
がLayoutParams
の内側の子を持っているかどうかをチェックすることで実現できます。あなたの場合はRelativeLayout.LayoutParams
です。 RelativeLayout.LayoutParams#addRule(int verb)
と RelativeLayout.LayoutParams#addRule(int verb, int anchor)
を使うことになるでしょう。
あなたはコードを介してそれに到達することができます:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)button.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of);
button.setLayoutParams(params); //causes layout update
btn1.setId(1);
addRule()
であると思う、このLayoutParams
name__オブジェクトのためのAndroid Javaドキュメントをチェックしてください。値がtrueまたはfalseのRelativeLayout
属性を追加するには、falseの場合は0
を、trueの場合はRelativeLayout.TRUE
を使用します。
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams()
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE)
属性がすでに追加されているかどうかは関係ありません。有効化/無効化にはaddRule(verb, subject)
を使用します。ただし、ポストAPI 17では、removeRule(verb)
のショートカットにすぎないaddRule(verb, 0)
を使用できます。