Как программно установить атрибут 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
объект.