2017-04-05 101 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