从一个源使用多个imageview

时间:2013-04-05 21:41:42

标签: android imageview

我的activity_main.xml中有一个Imageview,我想从不同的位置画两个。我试了这个没有成功:

    image = (ImageView)findViewById(R.id.imageView1);
    image2 = (ImageView)findViewById(R.id.imageView1);

    LayoutParams params = (LinearLayout.LayoutParams) image.getLayoutParams();
    LayoutParams params2 = (LinearLayout.LayoutParams) image2.getLayoutParams();

    params.topMargin = 50;
        params.leftMargin = 50;
        image.setLayoutParams(params);

        params2.topMargin = 100;
        params2.leftMargin = 100;
        image2.setLayoutParams(params2);

它只画了一件。我也试过了setImageBitmap

image2.setImageBitmap(((BitmapDrawable)image.getDrawable()).getBitmap());

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您不能重复使用相同的ImageView。您需要将另一个ImageView添加到布局xml文件中:

<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/imageView2" />

然后更改此行:

image2 = (ImageView)findViewById(R.id.imageView1);

到此:

image2 = (ImageView)findViewById(R.id.imageView2);

另请注意,您应避免使用imageView1imageView2等名称。这些都不具有描述性,它们使得更难理解代码实际上在做什么。考虑使用更能描述变量的变量名称。它将使您的代码更易于理解和维护。

答案 1 :(得分:0)

您只看到一个ImageView,因为您的布局中只有一个ImageViewimageimage2都会在您的布局中引用相同的ID(R.id.imageView1):

image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView1);

我可以解决这两种方式:

  1. 一次为ImageView个充气,并在运行时将它们添加到您的布局中。对于您要做的事情,这有点复杂。
  2. 将另一个ImageView添加到您的xml布局(将ID设置为R.id.imageView2),并使用您想要的相应边距。然后只需在代码中引用每个ImageView并单独编辑它们。
  3. 解决方案#2在您的代码中看起来像这样(在向您的xml布局添加第二个ImageView之后):

    image = (ImageView)findViewById(R.id.imageView1);
    image2 = (ImageView)findViewById(R.id.imageView2);