ImageView CENTER_CROP不起作用

时间:2014-01-17 11:20:54

标签: android imageview android-linearlayout android-imageview

欢迎所有人。

我有一个必须显示ImageView的LinearLayout。 imageView必须适合LinearLayout的所有宽度,所以我使用 match_parent 作为宽度,并且必须保持纵横比,所以我使用 wrap_content 作为高度和setAdjustViewBounds为真。但有些东西不起作用,因为ImageView的宽度是正确的(它适合线性布局的宽度)但是imageView的高度是错误的(图像在上部和下部被剪切)

我尝试了所有比例类型(fit_center,fit_xy,center_crop,center_inside等...)我遇到了所有问题(例如,如果我使用fit_center,图像是不适合ImageView的整个宽度,我可以在图像的左侧和右侧看到两个黑色空格,我也尝试使用没有setAdjustViewBounds的FIT_CENTER,我有同样的问题)

这里有你的快照: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用于高度......它不起作用......为什么吗

1 个答案:

答案 0 :(得分:1)

我有一个XML格式,它可以按照你想要的方式工作。看看。

<ImageView 
    android:id="@+id/attachedImage"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true" />

但是如果你想在运行时这样做,我建议以这种方式创建XML并在runTime上膨胀View并将其添加到父布局。这肯定会奏效。

编辑:如何给ImageView充气。

LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.your_layout_contains_image_view, null, false);
ImageView imageView = view.findViewById(R.id.attachedImage);