2010-08-20 2 views
100

Quindi, ho una vista di immagini che dovrebbe visualizzare un'immagine arbitraria, un'immagine di profilo scaricata da internet. Voglio che ImageView riduca l'immagine per adattarla all'altezza del contenitore principale e una larghezza massima impostata di 60dip. Tuttavia, se l'immagine è alta in termini di rapporto e non ha bisogno della larghezza massima di 60 dpi, la larghezza del ImageView dovrebbe diminuire in modo che lo sfondo della vista si adatti perfettamente all'immagine.Immagini visualizzate Android non rispettando maxWidth?

ho provato questo,

<ImageView android:id="@+id/menu_profile_picture" 
    android:layout_width="wrap_content" 
    android:maxWidth="60dip" 
    android:layout_height="fill_parent" 
    android:layout_marginLeft="2dip" 
    android:padding="4dip" 
    android:scaleType="centerInside" 
    android:background="@drawable/menubar_button" 
    android:layout_centerVertical="true"/> 

ma che ha reso l'ImageView super grande per qualche motivo, forse utilizzato la larghezza intrinseca dell'immagine e wrap_content per impostarla - in ogni caso, non ha rispettato la mia maxwidth attributo .. Funziona solo all'interno di alcuni tipi di contenitori? È in un LinearLayout ...

Qualche suggerimento?

risposta

259

Ah,

android:adjustViewBounds="true" 

è necessario per maxwidth al lavoro.

Funziona ora!

+0

thx per la condivisione, si può contrassegnare la risposta come quella corretta si prega !? – WarrenFaith

+0

lavoro diligente per me !! –

+1

Grazie mille .. Ha funzionato bene per me :) –

1

Impostazione adjustViewBounds non aiuta se si utilizza match_parent, ma soluzione è semplice personalizzato ImageView:


public class LimitedWidthImageView extends ImageView { 
    public LimitedWidthImageView(Context context) { 
     super(context); 
    } 

    public LimitedWidthImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public LimitedWidthImageView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int specWidth = MeasureSpec.getSize(widthMeasureSpec); 
     int maxWidth = getMaxWidth(); 
     if (specWidth > maxWidth) { 
      widthMeasureSpec = MeasureSpec.makeMeasureSpec(maxWidth, 
        MeasureSpec.getMode(widthMeasureSpec)); 
     } 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 
} 
+1

adjustViewBounds sembra funzionare bene con una larghezza match_parent per me. –