2015-10-18 97 views
1

因此,我制作了一个可保存多个用户选择图片的应用程序。我有预设高度为300dp的默认ImageViews。一旦图像被放入ImageView中,我希望这个高度改变为wrap_content。我知道这样做的唯一方法是从布局中删除图像,然后用新的LayoutParams重新添加它,但这会弄乱我布局中其他视图的顺序。我可以更改高度而不删除它吗?拥有默认高度的ImageView,当图像放入图像时更改高度

本质:

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和形象一直后才放置。请帮助。

+0

在xml中可以使用android:minHeight = 300dp然后使用包装内容的高度 – Eoin

回答

1

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

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

工作很好,谢谢! – user2975375