Estoy tratando de centrar un ImageViewinterior LinearLayouthorizontal y verticalmente, pero no puedo hacerlo. La razón principal por la que no estoy usando un RelativeLayoutpara eso es porque necesito el layout_weight(mi Activityconsta de cuatro columnas que deben dividirse en partes iguales, y también responden a diferentes anchos de pantalla, cada columna tiene un ImageViewcentrado 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:gravitymaneja la alineación de sus hijos,android:layout_gravitymaneja la alineación de sí mismo.Así que usa uno de estos.
o
fuente
android:layout_gravityse utiliza para el diseño en síUso
android:gravity="center"para niños de suLinearLayoutEntonces su código debería ser:
fuente
Intenté las soluciones mencionadas aquí, pero no me ayudó. Me importa la solución es
layout_widthtener que usarwrap_contentcomo 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:gravityse puede usar en un diseño para alinear sus elementos secundarios.android:layout_gravityse puede usar en cualquier vista para alinearse en su padre.fuente