Java 布局和图像

Java 布局和图像,java,android,Java,Android,我想显示这些图像两次(在两种不同的布局中),但只在“第一行”工作。当我试图addView查看“第二行”中的图像时,我的应用程序崩溃了。有人能给我解释一下为什么要这样做以及如何做吗?错误在于第二行中添加的项目已附加。因此,您应该再次创建视图并将其添加到第二行 此外,您还应更改行的布局参数,如下所示: package com.example.paul_2.a5aprilie; import android.os.Bundle; import android.support.v7.app.AppCo

我想显示这些图像两次(在两种不同的布局中),但只在“第一行”工作。当我试图
addView
查看“第二行”中的图像时,我的应用程序崩溃了。有人能给我解释一下为什么要这样做以及如何做吗?

错误在于第二行中添加的项目已附加。因此,您应该再次创建视图并将其添加到第二行

此外,您还应更改行的布局参数,如下所示:

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);
        }
    });
}
}
也许线性布局的方向有错误,因为现在有两列,而不是两行


还有,为什么不使用xml呢?

我试过了,但仍然没有出现在第二行,只是第一行。我不使用xml,因为我的大学希望我们用java动态地完成所有事情,xml中的任何内容都是不允许的:(非常感谢!
firstRow.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));