Estoy tratando de centrar un ImageView
interior LinearLayout
horizontal y verticalmente, pero no puedo hacerlo. La razón principal por la que no estoy usando un RelativeLayout
para eso es porque necesito el layout_weight
(mi Activity
consta de cuatro columnas que deben dividirse en partes iguales, y también responden a diferentes anchos de pantalla, cada columna tiene un ImageView
centrado y sin estirar).
Aquí está mi xml hasta ahora:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:baselineAligned="false"
android:gravity="center"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Main" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_speak"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_readtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_readtext" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_edit" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageButton_config"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/image_bg"
android:src="@drawable/ic_config" />
</LinearLayout>
</LinearLayout>
Respuestas:
android:gravity
maneja la alineación de sus hijos,android:layout_gravity
maneja la alineación de sí mismo.Así que usa uno de estos.
o
fuente
android:layout_gravity
se utiliza para el diseño en síUso
android:gravity="center"
para niños de suLinearLayout
Entonces su código debería ser:
fuente
Intenté las soluciones mencionadas aquí, pero no me ayudó. Me importa la solución es
layout_width
tener que usarwrap_content
como valor.fuente
Aquí hay un código de muestra. Esto funcionó para mí.
Entonces, está diseñando el diseño lineal para colocar todos sus contenidos (TextView y Button) en su centro, y luego TextView y Button se colocan en relación con el centro del diseño lineal.
fuente
android:gravity
se puede usar en un diseño para alinear sus elementos secundarios.android:layout_gravity
se puede usar en cualquier vista para alinearse en su padre.fuente