LinearLayout setMargins 以编程方式无效

Posted

技术标签:

【中文标题】LinearLayout setMargins 以编程方式无效【英文标题】:LinearLayout setMargins programmatically has not effect 【发布时间】:2015-10-07 11:34:44 【问题描述】:

请看下面的代码:

        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);

为什么它不起作用?

【问题讨论】:

你得到了什么结果?你期待什么? 没有添加边距,但我希望边距为 100。任何值都无效 10 或 100 无效 试试this。这个答案可能对你有帮助 发布包含FrameLayout的xml文件。 【参考方案1】:

改变

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 类,而不是视图。由于这里您的父视图是 FrameLayout,因此您必须使用 FrameLayout.LayoutParams。

【讨论】:

以上是关于LinearLayout setMargins 以编程方式无效的主要内容,如果未能解决你的问题,请参考以下文章

忽略 setMargin() 的相对布局

Android:如何以编程方式设置 LinearLayout 边距

Android 中setMargins和setPadding的区别

Android setMargins 无法以编程方式工作

如何在 Android 中以编程方式设置按钮的边距?

BlackBerry中的setMargin方法