选项1 - 依赖于周围/父布局类型,所以如果父布局类型是RelativeLayout,你应该使用RelativeLayout.LayoutParams而不是LinearLayout.LayoutParams:
LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
params.setMargins(0, 100, 0, 0);
myButton.setLayoutParams(params);
//myButton.requestLayout();
选项 2 - 使用不依赖于周围/父布局类型的通用方法:
public static void setMargins (View v, int left, int top, int right, int bottom) {
if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
p.setMargins(left, top, right, bottom);
v.requestLayout();
}
}
用法:
setMargins(myButton, 0, 100, 0, 0);