布局属性以编程方式

时间:2012-11-26 18:43:42

标签: android layout

我有relativelayout作为容器,我有设置文本和图像,接下来我addView()这个relativelayout两次到一个线性布局,一切都很好但我不能分开两个相对布局他们总是坚持彼此,这里是代码:

的LinearLayout

layout = new LinearLayout(context);
LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);

ll.setMargins(5, 5, 5, 5);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setPadding(5, 5, 5, 5);
layout.setLayoutParams(ll);
layout.setId(i);

layout.addView(m1.box);
layout.addView(m2.box);

其中m1和m2是: 的RelativeLayout:

box = new RelativeLayout(context);

RelativeLayout.LayoutParams rl = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);

rl.setMargins(5, 5, 5, 5);
rl.width = 125;
rl.height = 125;

box.setId(i);
box.setPadding(5, 5, 5, 5);
box.setBackgroundColor(color1);
box.setLayoutParams(rl);
//add some text and image

如何将m1与m2分开?现在他们看起来像OO我需要添加空间O_O。

1 个答案:

答案 0 :(得分:1)

首先,这不起作用,因为父布局是LinearLayout,而您定义的LayoutParamsRelativeLayoutLayoutParams应该与父项的类型匹配,而不是与子项的类型匹配,因为它们告诉父项如何以及在何处放置它的子项。

其次,使用addView(View v, LayoutParams lp)代替addView(View v)来防止此类错误。