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