2016-03-25 3 views
-1

は、ここで私が何をしたいの絵です:複数画像の重ね合わせ効果を動的に達成するにはどうすればよいですか?

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

すべての画像が異なっていると私は2-10の間で持つことができます。

私が今持っているコードは次のとおりです。

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); 
     } 

と結果(picUris []は私のウリの配列である)(フラグは絵の#です)

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

問題はサイズが変更されていることです私が望むように画面で切り取られることはありませんし、底には何か変わったことがあります。

+0

何も変更されていません:/ –

+0

これは私がやったことです:lp.setMargins(50 * i、50 * i、0、0);ここでは0 <= i <5で、上の写真で見ることができます。マージンは0,50,100,150,200の5枚です。問題は、右端と下端に収まるようにサイズが変更され、必要なように外れないことです。申し訳ありませんが写真ではっきりしていない場合は、私は周りの境界のようなものをまだ追加しようとしていないと –

+0

私はそれがリサイズを行う 'RelativeLayout'だと思う。 'RelativeLayout'は、子どもの' View'を操作して、思った通りにレイアウトされたものを得ることができます。代わりに 'FrameLayout'を試してみてください。 –

答えて

0

なぜStackviewを使用しないのですか?基本的には、あなたはビューを作成することなく、正確なスメエの結果を達成します....ホイールを再発明する必要はありません...

0

すべての画像が異なっていて、 2-10

LayerDrawableを使用し、各レイヤーをたとえばsetLayerInsetでオフセットする必要があると思います。または、背景のすべてをxmlに作成し、viewgroupに設定します。お使いの状況でRAMを多く使用しているため、FrameLayoutRelativeLayoutを使用することはお勧めできません。