Tengo el siguiente diseño básico
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_background">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceLarge"
android:padding="10dp"
android:text="HELLO WORLD" />
</LinearLayout>
<LinearLayout>
Parece que el xml es correcto pero el texto está alineado a la izquierda. La vista de texto ocupa todo el ancho del padre y la vista de texto está configurada para estar centrada. No estoy seguro de cual es el problema...
android
android-layout
android-linearlayout
layout-gravity
Jake Wilson
fuente
fuente
Respuestas:
Lo que está sucediendo es que, dado que TextView está llenando todo el ancho del LinearLayout interno, ya está en el centro horizontal del diseño . Cuando lo usa
android:layout_gravity
, coloca el widget, como un todo, en la gravedad especificada. En lugar de colocar todo el centro de widgets, lo que realmente está tratando de hacer es colocar el contenido en el centro, lo que se puede lograrandroid:gravity="center_horizontal"
yandroid:layout_gravity
eliminar el atributo.fuente
android:layout_width
tendrá el mismo valor (después del diseño). Dado que la anchura de la TextView es igual a la de de la LinearLayout interior la TextView tiene efectivamente losandroid:layout_gravity
valores deleft
,right
ycenter
al mismo tiempo.ImageView
sulayout_gravity
y porTextView
sugravity
es lo que solo funciona. ¡Android es genial! Gracias a todas las hermosas publicaciones de SO sin las cuales el desarrollo era simplemente imposible.android:layout_width="match_parent"
fuente
Si lo coloca
<TextView>
en el centro<Linearlayout>
, primero pongaandroid:layout_width="fill_parent"
obligatorioNo es necesario usar ninguna otra gravedad
fuente
Utilizar
android:gravity="center"
en enTextView
lugar delayout_gravity
.fuente
Simplemente use: android: layout_centerHorizontal = "true"
Pondrá toda la vista de texto en el centro
fuente