毕加索在调整图像大小时不会保留纵横比

时间:2015-07-15 19:23:32

标签: android android-layout picasso android-relativelayout

我想保留imageView的宽高比,并调整它以尽可能大地填充/调整,而不会使用Picasso扭曲/改变它的宽高比。

到目前为止,我发现了这个:

scaling image size in Picasso

建议使用:

.fit().centerInside() 

然而,当我尝试时:

        Picasso.with(this).load(boxart)
.fit().centerInside() 
        .into(imageItem);

与我的XML一起:

    <RelativeLayout
        android:id="@+id/rl_ListView1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerInParent="true"
        android:layout_gravity="left"
        android:layout_weight="0.3" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:scaleType="fitXY"
            android:layout_gravity="left" />
    </RelativeLayout>

然而,图像仍然显得扭曲(看起来太长而且很瘦 - 它的原始宽高比是扭曲的)我不确定为什么。

enter image description here

2 个答案:

答案 0 :(得分:9)

下面的代码应该有效:

.fit().centerCrop() 

答案 1 :(得分:3)

CenterInside CenterInside()是一种裁剪技术,可以缩放图像,使两个维度都等于或小于ImageView的请求边界。图像将完全显示,但可能无法填满整个ImageView。

Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200)
.centerInside() 
.into(imageViewResizeCenterInside);