有一个具有默认高度的 ImageView,当将图像放入其中时更改高度

Have an ImageView with a default height, change height when an image is put into it

所以我正在制作一个包含多张用户选择的图片的应用程序。我有预设高度为 300dp 的默认 ImageView。一旦将图像放入 ImageView,我希望此高度更改为 wrap_content。我知道这样做的唯一方法是从布局中删除图像,然后使用新的 LayoutParams 重新添加它,但这会打乱我布局中其他视图的顺序。我可以在不删除它的情况下更改高度吗?

本质上:

LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
final float scale = getResources().getDisplayMetrics().density;
LinearLayout.LayoutParams mTestImgParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                (int) Math.ceil(scale * 300)
        );
final ImageView createdView = new ImageView(this);
mainLayout.addView(createdView, mTestImgParams);

//onLongClick listener, get picture, set the picture into the imageview, etc.

我想改变

(int) Math.ceil(scale*300)

LinearLayout.LayoutParams.WRAP_CONTENT

无需移除并重新添加 ImageView,并且仅在放置图像之后。请帮忙

您可以尝试获取当前布局参数并进行更改。

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) createdView.getLayoutParams();
params.height = LayoutParams.WRAP_CONTENT;
createdView.setLayoutParams(params);