我已经设置了我的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。
答案 0 :(得分:35)
如果您正在使用现有视图,那么从头开始创建一组新的LayoutParams
可能需要做很多工作。相反 - 您可以抓取视图的现有LayoutParams,编辑它们,然后将它们应用到视图以使用setLayoutParams()
更新其LayoutParams
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
的{{1}}即可。如果您要设置特定于某种类型视图的参数(例如ViewGroup
中的对齐),则必须导入该类型视图的RelativeLayout
。
答案 1 :(得分:6)
你可以像
那样做ImageView imageView = findViewById(R.id.dl_image);
imageView.getLayoutParams().width = 120;