2017-04-05 102 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); 
     } 
    }); 
} 
} 

我想兩次顯示這些圖像(兩種不同的佈局),但工作只是「firstRow」。當我嘗試addView「secondRow」中的圖像時,我的應用程序崩潰了。有人能解釋我爲什麼以及如何做到這一點?佈局和圖像android

回答

0

錯誤在於第二行添加的項目已經連接。因此,您應該再次創建視圖並將其添加到第二行。

你也應該改變你的行佈局PARAMS這樣的:

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

也許你有錯誤在你LinearLayouts的方向,因爲有兩列,而不是現在,如果行。

P.S.爲什麼你不使用xml來達到這個目的?

+0

我試過了,但還是沒有出現第二排,只是第一排。 –

+0

我不使用XML,因爲我的大學希望我們在java中動態地執行所有操作,XML中不允許任何操作。 :( –

+0

我已經更新了我的答案@ paul-andrei – shmakova