La vista de texto debe ser match_parent o fill_parent para que esto funcione. Si su contenido de envoltura, entonces no se centrará.
Kalel Wade
77
@KalelWade: centrar texto en una vista de texto con wrap_content no tiene ningún sentido. Tal vez esté pensando en centrar una vista de texto en una vista primaria, en cuyo caso, simplemente coloca esta línea en la vista principal.
Mooing Duck
@Mooing Duck Por lo tanto, la razón para no usar contenido de envoltura, no tiene sentido. Pero cuando estás haciendo frente y pegando o simplemente corriendo, no puedes juntar dos y dos. Por eso lo mencioné.
Kalel Wade
1
si TextView con ancho y alto igual a "wrap_content" está dentro de LinearLayout con ancho y alto "match_parent", entonces necesita establecer la layout_gravity de Linear_layout.
Faisal Naseer
1
@MooingDuck, cuando la altura es "wrap_content" y la gravedad es "center_vertical", se dibuja en Design (vista previa) como centrado, pero en un dispositivo se coloca en la parte superior. Por lo tanto, haga la altura "match_parent" y establezca la gravedad en "center_vertical" o "center".
O simplemente textview.setGravity (Gravity.CENTER);
Amplify91
¿Cuál es el criterio de juicio para decidir qué forma elegir, escribir en xml o escribir en un archivo Java?
kenju
2
@Kenju si desea que sea fácilmente editable y el valor no cambiará durante el tiempo de ejecución: XML. Si debe cambiar el valor en tiempo real (por ejemplo, cambiar la alineación cuando el usuario presiona un botón), entonces solo puede hacerlo a través de Java.
Gustavo Maciel
2
@GustavoMaciel entonces, básicamente xml a menos que necesite ser modificado dinámicamente ... Ahora lo tengo. ¡Gracias por su respuesta simple y útil!
kenju
115
android:layout_centerInParent="true"
Esto funciona cuando se usa con un RelativeLayout donde la altura y el ancho del diseño se establecen en wrap_content.
Esto NO funciona cuando hay un ajuste de línea en TextView. El texto será de ancho completo y multilínea Y se justificará a la IZQUIERDA dentro del TextView. Aparecerá justificado a la izquierda en la pantalla. Debe usar "gravedad" como se especifica en las otras respuestas.
David Manpearl
83
También puedes usar la combinación:
android:gravity="left|center"
Luego, si el ancho de la vista de texto es mayor que "fill_parent", el texto seguirá alineado a la izquierda (no centrado como con la gravedad establecida solo en "centro").
El primero en el código XML. Debe prestar atención al Gravityatributo. También puede encontrar este atributo en el Editor gráfico; puede ser más fácil que el EDITOR XML.
Si está utilizando TableLayout, asegúrese de establecer la gravedad de TableRows en el centro también. De lo contrario, no funcionará. Al menos no funcionó conmigo hasta que configuré la gravedad de TableRow en el centro.
La semántica del código está mal. Reemplace layout_centerhorizontaly layout_centerverticalpor layout_centerHorizontaly layout_centerVertical("H" y "V" en mayúsculas, de lo contrario no funcionará).
yugidroid
2
layout_ * le dice al padre de la Vista dónde quiere estar. Sin diseño_ * le dice a la Vista cómo colocar sus componentes
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center_vertical|center_horizontal"android:text="Your Text goes here"/>
Para hacer esto en tiempo de ejecución, use algo como esto en su actividad
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:text="Your Text goes here"/>
Para hacer esto en tiempo de ejecución, use algo como esto en su actividad
Si la TextView'saltura y el ancho son wrap contententonces el texto dentro de TextViewsiempre estará centrado. Pero si el TextView'sancho es match_parenty la altura es match_parentowrap_content entonces tienes que escribir el siguiente código:
Esto realmente centrará el texto en TextView. Si solo usas la gravedad, hay un poco de relleno final dependiendo de cuál sea el texto ... Si tienes una pequeña insignia circular con texto en el centro, por ejemplo, puedes ver una diferencia muy obvia.
tarrball
14
En RelativeLayout, será agradable con eso.
Y otro Buttony cualquier otra cosa que pueda agregar.
Lo siguiente funciona muy bien para mí.
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ff314859"android:paddingLeft="16dp"android:paddingRight="16dp"><TextViewandroid:id="@+id/txt_logo"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="your text here"android:textSize="30dp"android:gravity="center"/>
...other button or anything else...
</RelativeLayout>
Si está tratando de centrar el texto en un TableRow en un TableLayout, así es como lo conseguí:
<TableRowandroid:id="@+id/rowName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dip"><TextViewandroid:id="@+id/lblSomeLabel"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:layout_width="0dp"android:layout_weight="100"android:text="Your Text Here"/></TableRow>
textAlignment = "center" no hará el trabajo hasta que TextView tenga dimensiones para emparejar_parent
SAurabh
El ejemplo anterior de @SAurabh funciona sin problemas.
Chathura Wijesinghe
¿Funciona sin gravedad para la matriz o la gravedad del diseño en sí mismo? No lo hará La alineación del texto alineará el texto dentro de los límites de su vista, por lo que hasta que textView tome match_parent en este caso, no parecerá así sin gravedad en su diseño principal o layout_gravity en sí mismo
SAurabh
9
Aquí está mi respuesta que había usado en mi aplicación. Muestra texto en el centro de la pantalla.
La altura y el ancho de TextView son contenido de ajuste, luego el texto dentro de la vista de texto siempre estará centrado, luego se centrará en su diseño principal mediante el uso de:
La gravedad de TextView funciona según el diseño principal.
Diseño lineal :
Si usa LinearLayout, encontrará dos atributos de gravedad android: gravity y android: layout_gravity
android: gravity: representa la poción de diseño del texto interno de TextView mientras que android: layout_gravity: representa la posición de TextView en la vista principal.
Si desea establecer el texto horizontal y verticalmente en el centro, use el siguiente código
Usando RelativeLayout puede usar la siguiente propiedad en TextView
android: gravity = "center" para el centro de texto en TextView.
android: gravity = "center_horizontal" texto interno si desea centrado horizontalmente.
android: gravity = "center_vertical" texto interno si desea centrado verticalmente.
android: layout_centerInParent = "true" si desea TextView en la posición central de la vista principal. android: layout_centerHorizontal = "true" si desea TextView en el centro horizontal de la vista principal. android: layout_centerVertical = "true" si desea TextView en el centro vertical de la vista principal.
Por cierto, ¿alguna razón por la que retrocediste a la revisión anterior? La revisión que revierte es una buena práctica para que, como lo ha mencionado el editor, pueda ayudar a los editores de texto con la codificación.
Respuestas:
Supongo que está utilizando el diseño XML.
También puede usar la gravedad
center_vertical
ocenter_horizontal
según su necesidad.y como @stealthcopter comentó en Java:
.setGravity(Gravity.CENTER);
fuente
android:gravity="center"
). Todavía se muestra en el extremo izquierdo de la pantalla. :(android:layout_gravity="center"
que hace otra cosa.Esto hará el truco
fuente
También puede configurarlo dinámicamente usando:
fuente
Esto funciona cuando se usa con un RelativeLayout donde la altura y el ancho del diseño se establecen en wrap_content.
fuente
TextView
. El texto será de ancho completo y multilínea Y se justificará a la IZQUIERDA dentro delTextView
. Aparecerá justificado a la izquierda en la pantalla. Debe usar "gravedad" como se especifica en las otras respuestas.También puedes usar la combinación:
Luego, si el ancho de la vista de texto es mayor que "fill_parent", el texto seguirá alineado a la izquierda (no centrado como con la gravedad establecida solo en "centro").
fuente
Aplicar gravedad:
Para vertical:
En XML:
fuente
Hay dos formas de hacer esto.
El primero en el código XML. Debe prestar atención al
Gravity
atributo. También puede encontrar este atributo en el Editor gráfico; puede ser más fácil que el EDITOR XML.Para su escenario específico, los valores de la gravedad serán:
En el editor gráfico encontrará todos los valores posibles, incluso verá sus resultados.
fuente
Si está utilizando TableLayout, asegúrese de establecer la gravedad de TableRows en el centro también. De lo contrario, no funcionará. Al menos no funcionó conmigo hasta que configuré la gravedad de TableRow en el centro.
Por ejemplo, así:
fuente
Debe configurar TextView Gravity (Centro horizontal y Centro vertical) de esta manera:
y
Y utilizando dinámicamente:
fuente
layout_centerhorizontal
ylayout_centervertical
porlayout_centerHorizontal
ylayout_centerVertical
("H" y "V" en mayúsculas, de lo contrario no funcionará).En mi opinión,
es mejor que,
que es mejor que
al menos para formatear texto.
fuente
Para diseño lineal: en XML use algo como esto
Para hacer esto en tiempo de ejecución, use algo como esto en su actividad
Para diseño relativo: en XML use algo como esto
Para hacer esto en tiempo de ejecución, use algo como esto en su actividad
fuente
Usar en el archivo XML.
Archivo de diseño
o:
Use esto dentro de la clase Java
fuente
Use esto para un diseño relativo
y para otro diseño
fuente
Si la
TextView's
altura y el ancho sonwrap content
entonces el texto dentro deTextView
siempre estará centrado. Pero si elTextView's
ancho esmatch_parent
y la altura esmatch_parent
owrap_content
entonces tienes que escribir el siguiente código:Para RelativeLayout:
Para LinearLayout:
fuente
Si bien el uso de la gravedad funciona para TextView, hay un método alternativo implementado en el nivel 17 de API:
No sé la diferencia, pero también funciona. Sin embargo, solo para API nivel 17 o superior.
fuente
En
RelativeLayout
, será agradable con eso.Y otro
Button
y cualquier otra cosa que pueda agregar.Lo siguiente funciona muy bien para mí.
fuente
La forma más fácil (que sorprendentemente solo se menciona en los comentarios, por eso publico como respuesta) es:
fuente
Simplemente puede configurar el
gravity
de su vista de texto enCENTER
.fuente
Si está tratando de centrar el texto en un TableRow en un TableLayout, así es como lo conseguí:
fuente
Utilizar
android:textAlignment="center"
fuente
Aquí está mi respuesta que había usado en mi aplicación. Muestra texto en el centro de la pantalla.
fuente
Si está utilizando diseño relativo:
Si está utilizando LinearLayout
fuente
Como muchas respuestas sugieren anteriormente, funciona bien.
Si desea centrarlo solo verticalmente:
o solo horizontalmente:
fuente
Simplemente, en su archivo XML, configure la gravedad de la vista de texto en el centro:
fuente
Puedes hacer esto para centrar el texto
fuente
La altura y el ancho de TextView son contenido de ajuste, luego el texto dentro de la vista de texto siempre estará centrado, luego se centrará en su diseño principal mediante el uso de:
Para LinearLayout también el código es el mismo:
y programáticamente padre es el código Java RelativeLayout esto en tiempo de ejecución usa algo como esto en tu actividad
fuente
Podemos lograr esto con estas múltiples formas: -
fuente
La gravedad de TextView funciona según el diseño principal.
Diseño lineal :
Si usa LinearLayout, encontrará dos atributos de gravedad android: gravity y android: layout_gravity
android: gravity: representa la poción de diseño del texto interno de TextView mientras que android: layout_gravity: representa la posición de TextView en la vista principal.
Si desea establecer el texto horizontal y verticalmente en el centro, use el siguiente código
Diseño relativo :
Usando RelativeLayout puede usar la siguiente propiedad en TextView
android: gravity = "center" para el centro de texto en TextView.
android: gravity = "center_horizontal" texto interno si desea centrado horizontalmente.
android: gravity = "center_vertical" texto interno si desea centrado verticalmente.
android: layout_centerInParent = "true" si desea TextView en la posición central de la vista principal. android: layout_centerHorizontal = "true" si desea TextView en el centro horizontal de la vista principal. android: layout_centerVertical = "true" si desea TextView en el centro vertical de la vista principal.
fuente
Intenta de esta manera, funcionará
fuente
En realidad, podemos hacerlo mejor excluyendo fontPadding.
fuente