【发布时间】:2014-01-17 11:20:53
【问题描述】:
欢迎大家。
我有一个必须显示 ImageView 的 LinearLayout。 imageView 必须适合 LinearLayout 的所有宽度,所以我使用 match_parent 作为宽度,并且它必须保持纵横比,所以我使用 wrap_content 作为高度和 setAdjustViewBounds为真。但是有些东西不起作用,因为 ImageView 的宽度是正确的(它适合线性布局的宽度)但是 imageView 的高度是错误的(图像在上下部分被切割)
我尝试了所有比例类型(fit_center、fit_xy、center_crop、center_inside 等...),但我都遇到了问题(例如,如果我使用 fit_center,图像是不适合 ImageView 的整个宽度,我可以在图像的左右看到两个黑色空间,我也尝试使用 FIT_CENTER 而不使用 setAdjustViewBounds 并且我有同样的问题)
这里有一个快照:http://i.stack.imgur.com/8hrKF.png
这是我的代码:
LinearLayout onlineHolder = this.holders.get(i);
onlineHolder.setLayoutParams(
new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
onlineHolder.removeAllViews();
ImageView imgv = new ImageView(onlineHolder.getContext());
imgv.setLayoutParams(
new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
imgv.setAdjustViewBounds(true);
imgv.setScaleType(ImageView.ScaleType.CENTER_CROP);
Bitmap b=res.getCachedBitmapWithWidth(this.width); //obtenemos el recurso cacheado con el width correspondiente
imageElement.setBitmap(b);
imgv.setImageBitmap(b);
onlineHolder.addView(imgv);
谢谢
编辑:只有当我用绝对数字指定图像视图的宽度和高度时它才有效。例如,如果我输入 400(400 是屏幕的 50%,布局宽度)宽度和 583 高度,它可以工作,但是如果我将 MATCH_PARENT 设置为宽度,将 WRAP CONTENT 设置为高度......它不起作用......为什么?
【问题讨论】:
-
如果将 onlineHolder 参数设置为 wrap_content 和 wrap_content,同时将 imgv 布局参数设置为 match_parent 和 match_parent,会发生什么?其他事情保持不变。
-
图像左对齐显示,右侧有一个巨大的黑色空间
-
我对 setImageBitmap 有点怀疑! setImageResource 为我工作。它会自动缩放
-
它只有在我用绝对数字指定图像视图的宽度和高度时才有效。例如,如果我将宽度设置为 400,高度设置为 583,它可以工作,但如果我将 MATCH_PARENT 设置为宽度,将 WRAP CONTENT 设置为高度......它不起作用......为什么?
-
作为警告,不断地问同一个问题,然后将其删除,最终会导致您被完全阻止提问。尝试编辑您的问题,以澄清它们。
标签: android imageview android-linearlayout android-imageview