Java 在RelativeLayout中以编程方式布置ImageView时遇到问题
我试图在RelativeLayout中添加五个左右的ImageView,每个新视图位于前一个视图的右侧。然而,我得到的是(显然)它们彼此堆叠在一起,好像它们都是左对齐的。相关代码段:Java 在RelativeLayout中以编程方式布置ImageView时遇到问题,java,android,android-relativelayout,Java,Android,Android Relativelayout,我试图在RelativeLayout中添加五个左右的ImageView,每个新视图位于前一个视图的右侧。然而,我得到的是(显然)它们彼此堆叠在一起,好像它们都是左对齐的。相关代码段: ImageView[] foo = new ImageView[levels]; for (int i = 0; i < levels; i++) { foo[i] = new ImageView(context); layoutFoo.addView(foo[i]); foo[i]
ImageView[] foo = new ImageView[levels];
for (int i = 0; i < levels; i++) {
foo[i] = new ImageView(context);
layoutFoo.addView(foo[i]);
foo[i].setId(10 + i);
if (i == 0) {
RelativeLayout.LayoutParams fooParams = (RelativeLayout.LayoutParams) foo[i].getLayoutParams();
fooParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
foo[i].setLayoutParams(fooParams);
} else {
RelativeLayout.LayoutParams fooParams = (RelativeLayout.LayoutParams) foo[i].getLayoutParams();
fooParams.addRule(RelativeLayout.RIGHT_OF, foo[i-1].getId());
foo[i].setLayoutParams(fooParams);
}
}
ImageView[]foo=新的ImageView[levels];
对于(int i=0;i
有什么提示我做错了什么吗?ImageView没有任何宽度(因为我还没有为它们指定位图),这并不重要,对吧
编辑:问题是没有为ImageView设置高度和宽度。解决方案是使用setLayoutParams()或JustWork示例中的构造函数设置它们。您必须在设置属性后添加ImageView 将此代码移动到for循环的末尾:
layoutFoo.addView(foo[i]);
顺便说一下,您不需要ImageView[]
。您可以使用一个ImageView来完成它
更新:
以下是您可以使用的代码:
ImageView foo;
RelativeLayout.LayoutParams fooParams;
for (int i = 0; i < levels; i++) {
foo = new ImageView(context);
foo.setId(10 + i);
fooParams = (RelativeLayout.LayoutParams) foo.getLayoutParams(); // I don't understand why you are trying to get params of which hasn't been specified before.
// If I were you, I would do like:
fooParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (i == 0) {
fooParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
} else {
fooParams.addRule(RelativeLayout.RIGHT_OF, foo.getId()-1);
}
foo.setImageBitmap(yourBitmap); // Set bitmap.
foo.setLayoutParams(fooParams);
layoutFoo.addView(foo);
}
ImageView-foo;
RelativeLayout.LayoutParams fooParams;
对于(int i=0;i
我认为放置这些图像最简单的方法是使用图库。尽管有人不赞成这样做,但我认为这样做更好。除非我遗漏了什么,否则这不是真的;尝试向尚未添加到布局的视图中添加规则会引发RuntimeException。另外,您可以扩展第二位吗?您是否建议我向ImageView添加几个位图?我看不到任何方法…不幸的是你错过了这么多。这只是我在5秒钟内找到的一个例子,它证明了你没有找到:你的答案“你必须在设置属性后添加你的ImageView”,结果却不是这样;在设置属性之前,将ImageView添加到布局可以正常工作。不过,感谢您提供的示例代码,它确实引导我找到了答案,即我没有为ImageView设置高度或宽度。如果它确实引导了您,那就太好了。顺便问一下,为什么-1甚至被标记为答案?