我有一个非常简单的布局 - 右边的图像,左边是文字。文本应该换行并且不与图像重叠。两者都垂直居中于容器的最终高度。
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 :(得分:0)
不要将logoId设置为0。
使用setId(1231231)
代替或ID号这样的东西就像这样
lp.addRule(RelativeLayout.LEFT_OF, logo.getId());
如果您需要,也可以使用setMargins(...)
。
干杯