2011-12-09 76 views
12

我安裝我的ImageView類似如下:如何更改ImageView的大小?

<ImageView android:id="@+id/dl_image" 
       android:layout_width="60dp" 
       android:background="@drawable/pictureframe" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="10dp" 
       android:layout_alignParentLeft="true" 
       android:layout_centerVertical="true" 
       android:adjustViewBounds="true" 
       android:scaleType="fitCenter"/> 

注意layout_width固定爲60dp。根據我在線獲得的內容,我想將此寬度調整爲90dp或120dp(同時保持圖像的高寬比)。

我嘗試過使用setLayoutParams,但傳遞LayoutParams(120,LayoutParams.WRAP_CONTENT)會引發異常。它似乎並不喜歡它。

如果可能,我試圖避免爲更大的尺寸製作另一個ImageView。

回答

32

如果您使用的是現有視圖,則可以從頭開始創建一組新的LayoutParams,這可能需要很多工作。相反 - 你可以抓住視圖的現有的LayoutParams,編輯這些,然後將它們應用到視圖中使用setLayoutParams()

ImageView imageView = findViewById(R.id.dl_image); 
LayoutParams params = (LayoutParams) imageView.getLayoutParams(); 
params.width = 120; 
// existing height is ok as is, no need to edit it 
imageView.setLayoutParams(params); 

確保導入正確類型的LayoutParams更新其的LayoutParams。對於這種情況,正如您所評論的,您可以使用ViewGroupLayoutParams。如果您正在爲特定類型的視圖設置參數(例如RelativeLayout s中的對齊),則必須導入該類型視圖的LayoutParams

+1

看起來是這樣工作的。我使用ViewGroup的LayoutParams。它似乎工作得很好。謝謝! :) – atedja

+2

@alnite - 很高興有幫助。感謝您讓我瞭解'ViewGroup',編輯了回答以反映。 –

5

你可以做到這一切喜歡

ImageView imageView = findViewById(R.id.dl_image); 
imageView.getLayoutParams().width = 120;