放置在相对布局中时,如何确保视图不重叠

时间:2016-02-10 17:15:06

标签: java android relativelayout overlapping

我使用RelativeLayout使用LayoutParams放置视图并设置顶部(y坐标)和左边距(x坐标)。当我使用绝对位置放置视图时,我们如何确保它们彼此不重叠?我确实遇到了一些重叠的问题,我现在唯一的工作就是扩大y值。

这是我放置观点的代码:

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

lp.leftMargin = x;
lp.topMargin = y;

然后在创建视图后,我将其放置在正确位置的布局中:

if(field.getType().equalsIgnoreCase("label"))
{
  CSLabel label = (CSLabel) field;
  TextView tv = new TextView(this);
  tv.setText(Html.fromHtml(label.getText()));

  rscroll.addView(tv, lp);
}

以下是有时会发生什么的图片:

enter image description here

这种情况下的textview和radiogroup是重叠的。有没有办法以编程方式修复重叠?谢谢。

3 个答案:

答案 0 :(得分:1)

您不太可能想要使用x / y坐标来设置视图的位置,而是使用alignTop / alignBottom布局参数来设置相对于其他视图的位置,这将确保不会发生重叠要发生!

另外请考虑使用不同的布局,例如LinearLayout和Vertical orieantation,它在诸如你的简单情况下效率更高。

另外请考虑用XML而不是Java代码定义布局。

答案 1 :(得分:1)

将单选按钮限制在文本视图下方或限制文本视图保持在单选按钮上方。

使用布局参数和RelativeLayout.BELOW或RelativeLayout.ABOVE的addRule(int,int)方法。

http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#addRule(int,int)

答案 2 :(得分:0)

使用align Layout提供的align_top,layout_below和其他属性来对齐您的视图。我还建议您通过XML而不是以编程方式对齐布局。

阅读本文以获取有关相对布局http://developer.android.com/intl/pt-br/reference/android/widget/RelativeLayout.html

的更多信息