9

Ich möchte das Seitenverhältnis einer Bildansicht beibehalten und die Größe so anpassen, dass sie so groß wie möglich ist, ohne dass das Seitenverhältnis mit Picasso verzerrt/geändert wird.Picasso behält das Seitenverhältnis bei der Größenänderung nicht bei

Bisher habe ich das gefunden:

scaling image size in Picasso

, die unter Verwendung schlägt vor:

.fit().centerInside() 

aber wenn ich es versucht:

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

Zusammen mit meiner 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> 



    ... 

Allerdings erscheint das Bild immer noch verzerrt (es erscheint zu lang und dünn - es ist das ursprüngliche Seitenverhältnis verzerrt) und ich bin mir nicht sicher warum.

enter image description here

+0

Die [Javadoc für 'fit()'] (https://square.github.io/picasso/javadoc/com/squareup/picasso/RequestCreator.html#fit--) sagt, dass es " verkleinere das Bild so, dass es genau in das Ziel-ImageView passt ", dh ignoriere das Seitenverhältnis. –

+0

Ja, aber 'centerInside()' sollte das korrigieren, d. e. Passe das Bild so an, dass es in das "ImageView" passt, während das Seitenverhältnis beibehalten wird. Ich vermute, dass das 'android: scaleType: fitXY' das Problem ist. –

+0

Das war eigentlich sehr hilfreich ... das Bild ist nicht mehr verzerrt und behält sein Seitenverhältnis bei - es passt sich jedoch nicht richtig an (es gibt Leerzeichen um es herum) http://i.stack.imgur.com/ ZpCZ3.jpg http://pastebin.com/UXbuU3vv –

Antwort

7

Сode unten sollte funktionieren:

.fit().centerCrop() 
1

CenterInside CenterInside() ist eine Beschneidungstechnik, die das Bild skaliert, so dass beide Abmessungen gleich oder kleiner als die angeforderte Grenzen des Image . Das Bild wird vollständig angezeigt, füllt jedoch möglicherweise nicht das gesamte ImageView aus.

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