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.