2012-02-15 3 views
13

Ho un'immagine che è di 480 pixel per 40 pixel. Mi piacerebbe mostrare questa immagine in un ImageView senza averlo scalare per adattarsi.Come si impedisce il ridimensionamento in Imageview Android?

Es: Se il mio schermo è largo solo 320 pixel, vorrei che solo 320 pixel dell'immagine si mostrassero sullo schermo, senza che si riempisse nell'ImageView (anche se questo significa che il resto dell'immagine viene troncato) .

C'è un modo per impedirne il ridimensionamento?

MODIFICA: Inoltre, desidero che il lato sinistro dell'immagine si allinei con il lato sinistro dello schermo del dispositivo.

Grazie

risposta

23

Usa ScaleType.CENTER, come questo in XML:

android:scaleType="center" 

Questo sarà "centrare l'immagine nella vista, ma eseguire alcun ridimensionamento"

Read more here: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

(Questo è in ogni modo il primo colpo su google "scala di immagini")

+0

'ScaleType' è sicuramente la strada da percorrere. Funziona per molti casi d'uso diversi. –

+0

Grazie, ma c'è un modo per farlo restare a sinistra? – PaulG

+0

@PaulG RelativeLayout – AedonEtLIRA

10

Utilizzare lo scalingipo MATRIX per impostarlo senza ridimensionamento e senza centraggio

Utilizzerà la matrice identità a meno che non lo si imposti utilizzando setImageMatrix (matrice);

android:scaleType="matrix" 

O in Java:

view.setScaleType(ImageView.ScaleType.MATRIX); 
+0

Grazie mille! Il centro scaleType non ha funzionato come previsto, ma la matrice lo ha fatto. Nel mio caso ho un layout di TextView layout_toLeftOf l'immagine e quando il testo cresce ho bisogno dell'immagine a destra per rimanere sempre con la dimensione originale. – Moxor

0

Ho avuto un problema simile in cui ho avuto una dimensione grafica fissa che ho voluto scalare per lo schermo, ma rimanere in proporzione era 480 x 200.

Ho usato Fill_parent sull'altezza in modo che ridimensionasse e wrap_content sulla larghezza. Oltre ad allineare Parent left e Align Parent Top.

Nel tuo caso potresti usare wrap_content su entrambi e Allinea Parent Left. Poi ho twittato la larghezza usando il margine destro 180dp su schermi normali per essere sicuro che mantenesse la larghezza.

<ImageView 
    android:id="@+id/imageLayer" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginRight="180dp" 
    tools:ignore="ContentDescription" /> 
1

Provate questo:

    android:adjustViewBounds="true" 
        android:scaleType="centerCrop"