2011-12-09 44 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;