1. ホーム
  2. アンドロイド

[解決済み】相対レイアウトでボタンのlayout_align_parent_right属性をプログラムで設定する方法は?

2022-04-01 13:25:14

質問

プログラムで作成した相対レイアウトがあります。

 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);

では、どのようにすればプログラムで android:layout_alignParentRight="true となります。 または android:layout_toLeftOf="@id/btn" 属性で指定することができます。

解決方法は?

任意の LayoutParams を使用してコードから View.getLayoutParams . ただ 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