程序化RelativeLayout(类似于CSS float right)

时间:2012-02-19 01:59:28

标签: android android-layout

我有一个非常简单的布局 - 右边的图像,左边是文字。文本应该换行并且不与图像重叠。两者都垂直居中于容器的最终高度。

RelativeLayout看起来合适,将图像与父级的右边缘对齐,文本视图的右边缘与图像的左边缘对齐。文档使它听起来像RelativeLayout.LEFT_OF应该这样做。

这就是我所拥有的。文本覆盖图像。我需要textview只有可用空间一样大。

LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.CENTER_VERTICAL);

ImageView logo = new ImageView(context);
logo.setImageResource(R.drawable.whatever);
logo.setId(0);
addView(logo, lp);

lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.LEFT_OF, 0);
lp.addRule(RelativeLayout.CENTER_VERTICAL);

TextView header = new TextView(context);
header.setText("Lorem ipsum dolor sit amet.  Lorem ipsum dolor sit amet.  Lorem ipsum dolor sit amet.");
addView(header, lp);

我非常喜欢以编程方式(而不是XML)执行此操作,原因太长且无趣,无法提及。

任何见解都将受到赞赏。 TYIA。

1 个答案:

答案 0 :(得分:0)

不要将logoId设置为0。 使用setId(1231231)代替或ID号这样的东西就像这样 lp.addRule(RelativeLayout.LEFT_OF, logo.getId());如果您需要,也可以使用setMargins(...)


干杯