2

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

    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());

我应该如何解决这个问题?

4

2 回答 2

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);

顺便说一句,您应该避免使用像imageView1and之类的名称imageView2。这些根本不是描述性的,它们使您更难理解您的代码实际上在做什么。考虑使用更能描述变量作用的变量名称。它将使您的代码更易于理解和维护。

于 2013-04-05T21:50:54.770 回答
0

您只看到一个ImageView,因为ImageView您的布局中只有一个。两者image和在您的布局中image2引用相同的 id ( ):R.id.imageView1

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

正如我所见,你可以解决这两种方法:

  1. 一次膨胀你ImageView的 s 并在运行时将它们添加到你的布局中。对于您要尝试做的事情,这有点复杂。
  2. 使用所需的适当边距将另一个添加ImageView到您的 xml 布局(将 id 设置为)。R.id.imageView2然后只需ImageView在代码中引用每个并单独编辑它们。

解决方案 #2 在您的代码中看起来像这样(在ImageView您的 xml 布局中添加第二个之后):

image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView2);
于 2013-04-05T21:53:05.023 回答