2012-02-19 59 views
1

我有一个非常简单的布局 - 右侧的图像和左侧的文本。文字应该包裹并且不重叠图像。两者都垂直居中到容器的最终高度。编程RelativeLayout(类似于CSS float right)

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。

+0

不要你logoId设置为0 SETID(1231231),类似的东西和不喜欢它'lp.addRule(RelativeLayout.LEFT_OF,logo.getId());'你也可以setMargins(...)如果你需要他们 – 2012-02-19 02:01:57

+0

@SergeyBenner哈 - 我不能相信工作 - 如果你想发表评论作为答案,我会接受它 – momo 2012-02-19 03:08:07

+0

我已经将其设置为答案。很高兴帮助。 – 2012-02-19 16:15:07

回答

0

您logoId不要设置为0。 使用setId(1231231)代替或ID号类似的东西和不喜欢它 lp.addRule(RelativeLayout.LEFT_OF, logo.getId());你也可以使用setMargins(...)如果你需要他们。


干杯