Ответы:
Да:
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
вид, который хотите получить эти параметры.
В качестве альтернативы вы можете использовать представления текущих параметров макета и изменить их:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.below_id);
LayoutParams
а не создавать новые. На самом деле, это должно быть принято как правильный ответ.
Хотя ответ @jackofallcode правильный, его можно записать в одну строку:
((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);
LayoutParams
чтобы установить ихsetLayoutParams