2010-04-06 13 views
36

Ho provato tutti gli scaletypes, ma tutti hanno come risultato che l'immagine si trova nell'angolo sinistro della vista di immagini.android: come allineare l'immagine nel centro orizzontale di un'immagine?

<ImageView 
    android:id="@+id/image" 
    android:scaleType="centerInside" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:layout_marginRight="6dip" 
    android:background="#0000" 
    android:src="@drawable/icon1" /> 

risposta

38

tuo ImageView ha l'attributo wrap_content. Penserei che l'immagine sia centrata all'interno della visualizzazione di immagini, ma la visualizzazione di immagini non è centrata nella parentview. Se hai solo la visualizzazione di immagini sullo schermo prova match_parent anziché wrap_content. Se hai più di una vista nel layout, devi centrare la visualizzazione.

+0

Io ho più di una vista nel layout. Cosa intendi esattamente per "centrare l'immagine"? – Yang

+0

Lo stesso ImageView deve trovarsi all'interno di un componente di layout. Questo componente del layout circostante può organizzare gli elementi figlio ... Se potessi pubblicare l'intero file di layout, potrei provare a darti alcuni suggerimenti più precisi. – Janusz

+5

Yang - Penso che il tuo problema sia che il genitore è un layout relativo e non un layout lineare. In questo caso, prova Android: layout_centerHorizontal = "true" anziché layout_gravity. –

29

È possibile centrare l'ImageView stesso utilizzando:

android:layout_centerVertical="true" o android:layout_centerHorizontal="true" Per verticale o orizzontale. O per centrare all'interno del genitore:

android:layout_centerInParent="true"

ma suona come si sta cercando di centrare l'immagine reale fonte interna al ImageView stesso, che non sono sicuro su.

+13

nota: questo è vero quando il genitore è RelativeLayout –

+0

Come procedere quando il genitore è un LinearLayout? – VikramV

+1

Trovato !! Immagino che se il tuo genitore è un LinearLayout, potresti decidere di impostare un attributo nel suo figlio ImageView - android: layout_gravity = "center". Questo ha funzionato per me. Grazie. – VikramV

64
<ImageView 
android:id="@+id/img" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
/>; 
+15

nota: questo è vero quando genitore è un LinearLayout o simile –

+32

Se il genitore è un 'RelativeLayout', utilizzare' android: layout_centerHorizontal = "true" ' –

+0

Questa soluzione funziona anche se Android Studio non mostra questo attributo. – CoolMind

1

Utilizzando "fill_parent" da solo per la layout_width farà il trucco:

<ImageView 
    android:id="@+id/image" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="6dip" 
    android:background="#0000" 
    android:src="@drawable/icon1" /> 
9

questo funziona per me, quando l'allineamento visualizzazione dell'immagine in LinearLayout.

<ImageView android:id="@android:id/empty" 
    android:src="@drawable/find_icon" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" 
    android:scaleType="center" 
    /> 
0

Utilizzare questo attributo: Android: layout_centerHorizontal = "true"

1

Prova:

android:layout_height="wrap_content" 
android:scaleType="fitStart" 

sull'immagine nella RelativeLayout

2

Per me android:gravity="center" ha fatto il trucco nel elemento di layout genitore.

-1

Questo è il codice in xml di come centrare un ImageView, ho usato "layout_centerHorizontal".

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_centerHorizontal="true" 
    > 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img2" 
    /> 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img1" 
     /> 
</LinearLayout> 

o quest'altro esempio ...

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center_horizontal" 
    > 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img2" 
    /> 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img1" 
     /> 
</LinearLayout> 
+0

Se si intende fornire una risposta, aggiungere alcune spiegazioni. Se si intende essere una domanda, si prega di fare una nuova domanda. –

6

Prova di questo codice:

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center_horizontal"> 

      <ImageView 
       android:id="@+id/imgBusiness" 
       android:layout_width="40dp" 
       android:layout_height="40dp" 
       android:src="@drawable/back_detail" /> 
</LinearLayout> 
+0

Si prega di fornire alcune spiegazioni di testo. –

+0

Funziona per me, grazie :) –

Problemi correlati