2010-04-06 9 views
36

He intentado todos los tipos de escala, pero todos ellos hacen que la imagen esté en la esquina izquierda de la imagen.android: ¿cómo alinear la imagen en el centro horizontal de una imagen?

<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" /> 

Respuesta

38

Su ImageView tiene el atributo wrap_content. Creo que la imagen se centra en la vista de la imagen, pero la propia imagen no está centrada en la vista de los padres. Si solo tiene la vista de imagen en la pantalla, intente match_parent en lugar de wrap_content. Si tiene más de una vista en el diseño, debe centrar la imagen.

+0

Tengo más de una vista en el diseño. ¿A qué te refieres con "centro de la imagen"? – Yang

+0

ImageView debería estar dentro de un componente de diseño. Este componente de diseño circundante puede organizar los elementos secundarios ... Si pudiera publicar todo el archivo de diseño, podría intentar darle algunos consejos más precisos. – Janusz

+5

Yang: creo que su problema es que el elemento primario es un diseño relativo y no un diseño lineal. Si ese es el caso, prueba con android: layout_centerHorizontal = "true" en lugar de layout_gravity. –

29

Puede centrar la ImageView sí mediante el uso de:

android:layout_centerVertical="true" o android:layout_centerHorizontal="true" Para vertical u horizontal. O para centrar el interior de la matriz:

android:layout_centerInParent="true"

Pero parece que usted está tratando de centrar la imagen fuente real dentro de la imageview en sí, que no estoy seguro sobre.

+13

nota: esto es cierto cuando el padre es RelativeLayout –

+0

¿Cómo hacerlo cuando el padre es un LinearLayout? – VikramV

+1

¡Entendido! Supongo que si tu padre es un LinearLayout, podrías establecer un atributo en su hijo ImageView - android: layout_gravity = "center". Esto funcionó para mí. Gracias. – VikramV

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

nota: esto es cierto cuando parent es un LinearLayout o similar –

+32

Si el padre es un 'RelativeLayout', use' android: layout_centerHorizontal = "true" ' –

+0

Esta solución funciona incluso si Android Studio no muestra este atributo. – CoolMind

1

El uso de "fill_parent" por sí solo para la layout_width hará el truco:

<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

Esto funciona para mí cuando la alineación de vista de la imagen en 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

Usar este atributo: androide: layout_centerHorizontal = "true"

1

Probar:

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

en la imagen en el RelativeLayout

2

Para mí android:gravity="center" resolvieron el problema de la elemento de diseño principal

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/fullImageView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:contentDescription="@string/fullImageView" 
     android:layout_gravity="center" /> 

</LinearLayout> 
-1

Este es el código en XML de cómo centrar un ImageView, he usado "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 este otro ejemplo ...

<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

Si esto pretende ser una respuesta, por favor agregue alguna explicación. Si tiene la intención de ser una pregunta, por favor haga una nueva pregunta. –

6

Prueba este código:

<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

Proporcione algunas explicaciones de texto. –

+0

Funciona para mí, gracias :) –

Cuestiones relacionadas