2013-04-05 43 views
2

我在我的activity_main.xml中有一個Imageview,我想從另一個位置繪製兩個。我試過這個沒有成功:從一個來源使用多個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

由於佈局中只有一個ImageView,所以您只能看到一個ImageView。無論imageimage2引用您的佈局相同的ID(R.id.imageView1):

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

可以解決這2種方法,因爲我看到它:

  1. 虛增您ImageView■一個在時間和添加他們到運行時的佈局。這對你正在嘗試做的事情來說有點複雜。
  2. 將另一個ImageView添加到您的xml佈局(將ID設置爲R.id.imageView2),並使用所需的相應邊距。然後只需在代碼中引用每個ImageView並單獨編輯它們。

解決方案#2會是這個樣子在你的代碼(後加入第二ImageView到你的XML佈局):

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

我不得不使用myLayout.addView(圖像2)和它的作品。謝謝! – user1721713 2013-04-05 22:49:31

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。這些都不是描述性的,它們讓你更難理解你的代碼實際上在做什麼。考慮使用更多描述變量的變量名稱。它會讓你的代碼更易於理解和維護。