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 以编程方式无效的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何以编程方式设置 LinearLayout 边距