我陷入了一种特殊的情况,同时开发了android中的应用程序。
我的应用程序,从互联网下载图像,并在应用程序中以缩略图格式填充图像。
由于我不知道设计时图片/缩略图的数量,我使用下面提到的代码动态创建图像视图控件。
ArrayList<String> parsedPhoto=oPhotoList.getPhoto();
RelativeLayout media = (RelativeLayout)findViewById(R.id.media);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
for(int iCounter=0;iCounter<parsedPhoto.size();iCounter++)
{
bitmap=oParser.DownloadImage(parsedPhoto.get(iCounter));
ImageView img = new ImageView(this);
img.setImageBitmap(bitmap);
media.addView(img,p);
}
但在这种情况下,我的所有图像都相互重叠。 其中我希望每行显示3个图像,这是我能够通过xml实现的。
有人可以帮助我。
答案 0 :(得分:0)
使用GridView和适配器,而不是使用RelativeLayout。它不仅可以提高效率,而且还可以添加许多其他功能(如果已经存在,则不下载图像,下载元数据等)
答案 1 :(得分:0)
问题是您没有在RelativeLayout中找到imageview。使用此布局,您必须指定要在何处找到每个元素。如果你不这样做,他们会在同一个位置。
像GridView这样的视图可以让您以更简单的方式完成此任务。
但是,如果您愿意,可以使用RelativeLayout。您可以使用RelativeLayout.LayoutParams类的addRule()方法来指定每个图像的位置。例如:
首先,您可以存储添加图像的最后一个ID。
// The id of the first image added in the last row
int lastFirstId;
// The id of the last image added
int lastId;
然后,创建并指定imageview的位置(第一个图像有几个例外):
RelativeLayout.LayoutParams params = new RelativeLayoutParams();
params.setRule (params.RIGHT_OF, lastId);
params.setRule (params.BELOW, lastFirstId);
img.setLayoutParams(params);
我希望它有所帮助