如何改变ImageView的大小?

20

我已经按照下面的方式设置了我的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。

2个回答

45

如果你正在处理一个已有的视图,那么从头创建一组新的 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。 对于这种情况,正如您所评论的那样,您可以只使用ViewGroupLayoutParams。 如果您正在设置特定类型视图的参数(例如RelativeLayout中的对齐方式),则必须导入该类型视图的LayoutParams


1
看起来它是这样工作的。我使用了ViewGroup的LayoutParams。它似乎运行得很好。谢谢! :) - atedja
2
@alnite - 很高兴能帮到你。谢谢你告诉我关于ViewGroup的事情,我已经编辑了答案以反映这一点。 - Peter Ajtai
似乎您甚至不需要重新设置layoutParams到视图中,只需更改其值即可。 - Juan José Melero Gómez

8
你可以像这样完成所有操作
ImageView imageView = findViewById(R.id.dl_image);
imageView.getLayoutParams().width = 120;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接