2017-04-05 20 views
-1
package com.example.paul_2.a5aprilie; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     LinearLayout root = new LinearLayout(this); 
     root.setOrientation(LinearLayout.VERTICAL); 
     root.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT)); 
    setContentView(root); 

    Button btn1= new Button(this); 
    btn1.setText("Click Me"); 
    root.addView(btn1); 

    LinearLayout linearContainer=new LinearLayout(this); 
    linearContainer.setOrientation(LinearLayout.HORIZONTAL); 
    linearContainer.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT)); 

    root.addView(linearContainer); 

    final LinearLayout firstRow = new LinearLayout(this); 
    firstRow.setOrientation(LinearLayout.VERTICAL); 
    firstRow.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT)); 
    linearContainer.addView(firstRow); 

    ImageView fiora = new ImageView(this); 
    fiora.setBackgroundResource(R.drawable.fiora); 

    ImageView katarina= new ImageView(this); 
    katarina.setBackgroundResource(R.drawable.katarina); 

    ImageView lb=new ImageView(this); 
    lb.setBackgroundResource(R.drawable.lb); 

    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(200,120); 
    // params1.leftMargin =0; 
    // params1.topMargin = 0; 

    firstRow.addView(fiora,params1); 
    firstRow.addView(katarina,params1); 
    firstRow.addView(lb,params1); 

    LinearLayout secondRow = new LinearLayout(this); 
    secondRow.setOrientation(LinearLayout.VERTICAL); 
    secondRow.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT)); 
    linearContainer.addView(secondRow); 

    secondRow.addView(lb,params1); 
    secondRow.addView(fiora,params1); 
    secondRow.addView(katarina,params1); 







    btn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Animation animSlide = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.slide); 

      firstRow.startAnimation(animSlide); 
     } 
    }); 
} 
} 

これらの画像を2回(2つの異なるレイアウトで)表示したいだけで、「firstRow」だけで動作します。私は "secondRow"の画像のaddViewにしようとしているときに私のアプリがクラッシュしました。なぜ誰かが私に説明して、どのようにこれを行うことができますか?レイアウトと画像android

答えて

0

エラーは、2番目の行に追加された項目が既に添付されていることです。だからもう一度ビューを作成して2番目の行に追加する必要があります。

また、あなたは、このようなあなたの行のレイアウトのparams変更する必要があります。

firstRow.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 

をと行ならば2列ではなく、今そこにあるので、多分あなたは、あなたのLinearLayoutsの向きに誤りがあります。

P.S.なぜこの目的のためにxmlを使用しないのですか?

+0

まだ試してみましたが、まだ最初の行だけが2行目に表示されません。 –

+0

大学ではJavaですべてを動的に処理したいのでXMLを使用しません。XMLでは何も使用できません。 :( –

+0

私は自分の答えを更新しました@ paul-andrei – shmakova

関連する問題