我可以在运行时,编程设置“android:layout_below”吗?
是否有可能在运行时创build相对布局,以编程方式设置等效的android:layout_below
?
是:
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);
首先,代码通过指定高度和宽度创build一个新的布局参数。 addRule
方法正确地添加了相当于xml的android:layout_below
。 然后你只要在你想要这些参数的视图上调用View#setLayoutParams
。
或者,您可以使用视图当前布局参数并修改它们:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewToLayout.getLayoutParams(); params.addRule(RelativeLayout.BELOW, R.id.below_id);
虽然@jackofallcode答案是正确的,它可以写在一行:
((RelativeLayout.LayoutParams) viewToLayout.getLayoutParams()).addRule(RelativeLayout.BELOW, R.id.below_id);