LinearLayout setMargins 以编程方式无效
LinearLayout setMargins programmatically has not effect
请看下面的代码:
LinearLayout ll1 = new LinearLayout(context);
ll1.setBackgroundColor(Color.BLUE);
ll1.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams ll1LayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll1LayoutParams.setMargins(100, 0, 100, 0);
ll1.setLayoutParams(ll1LayoutParams);
...
// parentLayout is FrameLayout
parentLayout.addView(ll1, ll1LayoutParams);
为什么不起作用?
改变
LinearLayout.LayoutParams ll1LayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
至
FrameLayout.LayoutParams ll1LayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
将布局参数分配给子项时,您必须分配其父项而非视图的 LayoutParams class。由于此处您的父视图是 FrameLayout,因此您必须使用 FrameLayout.LayoutParams.
请看下面的代码:
LinearLayout ll1 = new LinearLayout(context);
ll1.setBackgroundColor(Color.BLUE);
ll1.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams ll1LayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll1LayoutParams.setMargins(100, 0, 100, 0);
ll1.setLayoutParams(ll1LayoutParams);
...
// parentLayout is FrameLayout
parentLayout.addView(ll1, ll1LayoutParams);
为什么不起作用?
改变
LinearLayout.LayoutParams ll1LayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
至
FrameLayout.LayoutParams ll1LayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
将布局参数分配给子项时,您必须分配其父项而非视图的 LayoutParams class。由于此处您的父视图是 FrameLayout,因此您必须使用 FrameLayout.LayoutParams.