Android 使用来自一个源的多个imageview
在我的Android 使用来自一个源的多个imageview,android,imageview,Android,Imageview,在我的activity_main.xml中有一个Imageview,我想在不同的位置从中画两个。我试过了,但没有成功: image = (ImageView)findViewById(R.id.imageView1); image2 = (ImageView)findViewById(R.id.imageView1); LayoutParams params = (LinearLayout.LayoutParams) image.getLayoutParams();
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());
我该如何解决这个问题?您不能像那样重复使用同一个ImageView。您需要将另一个ImageView添加到布局xml文件:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/imageView2" />
为此:
image2 = (ImageView)findViewById(R.id.imageView2);
另外,您应该避免使用像
imageView1
和imageView2
这样的名称。这些根本不是描述性的,它们使您更难理解代码实际在做什么。考虑使用更多描述变量所做的变量名。这将使您的代码更易于理解和维护 您只看到一个ImageView
,因为您的布局中只有一个ImageView
。image
和image2
在布局中引用相同的id(R.id.imageView1
):
image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView1);
在我看来,有两种方法可以解决这个问题:
ImageView
s充气一次,并在运行时将其添加到布局中。这对于你正在尝试做的事情来说有点复杂李>
ImageView
(将id设置为R.id.imageView2
)并具有所需的适当边距。然后只需在代码中引用每个ImageView
,并分别编辑它们李>
解决方案#2在您的代码中看起来像这样(在向xml布局添加第二个ImageView
之后):
我不得不使用myLayout.addView(image2),它可以正常工作。非常感谢。
image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView1);
image = (ImageView)findViewById(R.id.imageView1);
image2 = (ImageView)findViewById(R.id.imageView2);