¿Cómo puedo centrar el texto en horizontal y en vertical en una TextView
, de modo que parece exactamente a la mitad de la TextView
de Android
?
¿Cómo puedo centrar el texto en horizontal y en vertical en una TextView
, de modo que parece exactamente a la mitad de la TextView
de Android
?
Respuestas:
Supongo que está utilizando el diseño XML.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
También puede usar la gravedad center_vertical
o center_horizontal
según su necesidad.
y como @stealthcopter comentó en Java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Todavía se muestra en el extremo izquierdo de la pantalla. :(
android:layout_gravity="center"
que hace otra cosa.
android:gravity="center"
Esto hará el truco
También puede configurarlo dinámicamente usando:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
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.
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.
Aplicar gravedad:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
Para vertical:
txtView.setGravity(Gravity.CENTER_VERTICAL);
En XML:
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/Hello_World"
/>
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.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
Para su escenario específico, los valores de la gravedad serán:
center_vertical|center_horizontal
En el editor gráfico encontrará todos los valores posibles, incluso verá sus resultados.
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í:
<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center">
<TextView android:text="@string/chf" android:id="@+id/tv_chf" android:layout_weight="2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"></TextView>
</TableRow>
Debe configurar TextView Gravity (Centro horizontal y Centro vertical) de esta manera:
android:layout_centerHorizontal="true"
y
android:layout_centerVertical="true"
Y utilizando dinámicamente:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout_centerhorizontal
y layout_centervertical
por layout_centerHorizontal
y layout_centerVertical
("H" y "V" en mayúsculas, de lo contrario no funcionará).
En mi opinión,
android:gravity="center"
es mejor que,
android:layout_centerInParent="true"
que es mejor que
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
al menos para formatear texto.
Para diseño lineal: en XML use algo como esto
<TextView
android: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
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Para diseño relativo: en XML use algo como esto
<TextView
android: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
TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
Usar en el archivo XML.
Archivo de diseño
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
o:
Use esto dentro de la clase Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Use esto para un diseño relativo
android:layout_centerInParent="true"
y para otro diseño
android:gravity="center"
Si la TextView's
altura y el ancho son wrap content
entonces el texto dentro de TextView
siempre estará centrado. Pero si el TextView's
ancho es match_parent
y la altura es match_parent
owrap_content
entonces tienes que escribir el siguiente código:
Para RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</RelativeLayout>
Para LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</LinearLayout>
Si bien el uso de la gravedad funciona para TextView, hay un método alternativo implementado en el nivel 17 de API:
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
No sé la diferencia, pero también funciona. Sin embargo, solo para API nivel 17 o superior.
En RelativeLayout
, será agradable con eso.
Y otro Button
y cualquier otra cosa que pueda agregar.
Lo siguiente funciona muy bien para mí.
<RelativeLayout xmlns: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">
<TextView
android: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>
Simplemente puede configurar el gravity
de su vista de texto en CENTER
.
Si está tratando de centrar el texto en un TableRow en un TableLayout, así es como lo conseguí:
<TableRow android:id="@+id/rowName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView android: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>
Utilizar android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
Aquí está mi respuesta que había usado en mi aplicación. Muestra texto en el centro de la pantalla.
<TextView
android:id="@+id/txtSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/subject"
android:layout_margin="10dp"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge" />
Si está utilizando diseño relativo:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
Si está utilizando LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Simplemente, en su archivo XML, configure la gravedad de la vista de texto en el centro:
<TextView
android:gravity="center" />
Puedes hacer esto para centrar el texto
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
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:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Hello.."/>
</RelativeLayout>
Para LinearLayout también el código es el mismo:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello.."/>
</LinearLayout>
y programáticamente padre es el código Java RelativeLayout esto en tiempo de ejecución usa algo como esto en tu actividad
TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
Podemos lograr esto con estas múltiples formas: -
Método XML 01
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="@strings/text"
/>
Método XML 02
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@strings/text"
/>
Método XML 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
Método XML 04
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:text="@strings/text"
/>
Método Java 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Método Java 02
textview.setGravity(Gravity.CENTER);
Método Java 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
/>
</LinearLayout>
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.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Intenta de esta manera, funcionará
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
/>
</LinearLayout>