Как программно установить атрибут layout_align_parent_right кнопки в относительной компоновке?

У меня есть относительный макет, который я создаю программно:

 RelativeLayout layout = new RelativeLayout( this );
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT);

Теперь у меня есть две кнопки, которые я хочу добавить в этот относительный макет. Но проблема заключается в том, что обе кнопки отображаются слева от RelatiiveLayout, перекрывающиеся друг с другом.

buttonContainer.addView(btn1);
buttonContainer.addView(btn2);

Теперь я хочу знать, как я могу программно установить android:layout_alignParentRight="true " или android:layout_toLeftOf="@id/btn" атрибута кнопок, как мы делаем в xml?

Ответ 1

Вы можете получить доступ к любому 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

Ответ 2

  • вам нужно создать и id для кнопки, которые вам нужны для повторения: btn1.setId(1);
  • вы можете использовать переменную params для добавьте параметры в макет, i подумайте, что метод addRule(), проверьте вне форума android java для этого LayoutParams объект.