2016-03-25 32 views
-1

这里是我想要做的一个画面:如何动态实现多图像分层效果?

http://i.stack.imgur.com/pQO2r.png

,所有的照片都是不同的,我可以2-10之间有。

我现在的代码是:

(标志图片#)

(picUris []是我的URI的数组)

RelativeLayout imgLayout = (RelativeLayout) findViewById(R.id.RelativeLayoutPictures); 
     for (int i = 0; i < flag; i++) 
     { 
      ImageView iv = new ImageView(this); 
      iv.setImageURI(picUris[i]); 

      RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
      lp.setMargins(50*i, 50*i, 0, 0); 
      lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
      lp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

      imgLayout.addView(iv, lp); 
     } 

和结果:

http://i.stack.imgur.com/pYD7x.jpg

问题在于它正在调整大小,不会像我想要的那样被屏幕截断,底部会出现一些奇怪的现象。

+0

没有什么改变:/ –

+0

这就是我做的:lp.setMargins(50 * i,50 * i,0,0);其中0 <= i <5,你可以在上面的图片中看到它,在5,50,100,150,200的边缘有5张照片。问题是,他们正在调整大小,以适应右侧和底部边缘,而不是像他们所需要的那样。对不起,如果它不清楚在图片中,我还没有尝试添加任何东西,但没有像周围的边框和阴影背后的影子 –

+0

我相信这是'RelativeLayout'做大小调整。 “RelativeLayout”做了很多操作其子View的功能,以“认为”是正确的方式布置事物。您可以尝试使用“FrameLayout”。 –

回答

0

为什么不使用Stackview?基本上它会达到确切的smae结果,而不会让你创造视图....您不必重新发明轮子...

0

其中所有图片都不同,我可以有2-10

我认为你应该使用LayerDrawable并通过例如setLayerInset偏移每层。或者在xml中创建所有背景并将其设置为您的viewgroup。我不建议你使用FrameLayoutRelativeLayout,因为他们在你的情况下都使用了很多RAM