studio programacion herramientas fundamentos con avanzado aplicaciones android android-layout android-linearlayout

programacion - manual de android en pdf



¿Cómo centrar el contenido dentro de un diseño lineal? (4)

Aquí hay un código de muestra. esto funcionó para mí.

<LinearLayout> . . . android:gravity="center" . .> <TextView android:layout_gravity = "center" /> <Button android:layout_gravity="center" /> </LinearLayout>

entonces está diseñando el diseño lineal para colocar todos sus contenidos (vista de texto y botón) en su centro y luego la vista de texto y el botón se colocan en relación con el centro del diseño lineal

Estoy tratando de centrar un ImageView dentro de LinearLayout horizontal y verticalmente, pero simplemente no puedo hacerlo. La razón principal por la que no estoy usando un RelativeLayout es porque necesito el layout_weight (mi Activity consiste en cuatro columnas que deben dividirse por igual, y que también responden a anchos de pantalla diferentes, 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>


Intenté las soluciones aquí, pero tengo un problema y trato de hacer algunos cambios. Me importa lo incorrecto en layout_width Necesito ser wrap_content como este

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_weight="1" >


android:gravity maneja la alineación de sus hijos,

android:layout_gravity maneja la alineación de sí mismo.

Entonces usa uno de estos.

<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_weight="1" android:gravity="center" > <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_weight="1" android:gravity="center" > <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>

o

<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: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:layout_gravity="center" 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:layout_gravity="center" android:background="@drawable/image_bg" android:src="@drawable/ic_readtext" /> </LinearLayout> ... </LinearLayout>


android:layout_gravity is used for itSelf of layout

usa android:gravity="center" para niños de tu LinearLayout

entonces tu código debería ser

<LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:layout_weight="1" >