Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用来自一个源的多个imageview_Android_Imageview - Fatal编程技术网

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充气一次,并在运行时将其添加到布局中。这对于你正在尝试做的事情来说有点复杂
  • 在xml布局中添加另一个
    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);