我的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());
我该如何解决这个问题?
答案 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);
另请注意,您应避免使用imageView1
和imageView2
等名称。这些都不具有描述性,它们使得更难理解代码实际上在做什么。考虑使用更能描述变量的变量名称。它将使您的代码更易于理解和维护。
答案 1 :(得分:0)
您只看到一个ImageView
,因为您的布局中只有一个ImageView
。 image
和image2
都会在您的布局中引用相同的ID(R.id.imageView1
):
image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView1);
我可以解决这两种方式:
ImageView
个充气,并在运行时将它们添加到您的布局中。对于您要做的事情,这有点复杂。 ImageView
添加到您的xml布局(将ID设置为R.id.imageView2
),并使用您想要的相应边距。然后只需在代码中引用每个ImageView
并单独编辑它们。 解决方案#2在您的代码中看起来像这样(在向您的xml布局添加第二个ImageView
之后):
image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView2);