android studio ¿Cómo centrar el texto horizontal y verticalmente en un TextView?




poner texto centrado en android studio (24)

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 puse la gravedad de TableRow en el centro.

Por ejemplo, como este:

<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>

¿Cómo centrar el texto horizontal y verticalmente en un TextView , para que aparezca exactamente en el medio de TextView en Android ?


Si está intentando centrar el texto en una TableRow en un TableLayout, así es como logré esto:

<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>

Mientras que 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, sólo para el nivel de API 17 o superior.


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.


Debe configurar TextView Gravity (Center Horizontal & Center Vertical) de la siguiente manera:

android:layout_centerHorizontal="true"   

y

android:layout_centerVertical="true"

Y dinámicamente utilizando:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

android:gravity="center" 

Esto hará el truco


La forma más sencilla (que, sorprendentemente, solo se menciona en los comentarios, por lo tanto, la razón por la que publico como respuesta) es:

textview.setGravity(Gravity.CENTER)

También puedes configurarlo dinámicamente usando:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

android:layout_centerInParent="true"

Esto funciona cuando se utiliza con un RelativeLayout donde la altura y el ancho del diseño se configuran en wrap_content.


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 de Java 01

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Metodo java 02

textview.setGravity(Gravity.CENTER);

Metodo java 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

Use esto para el diseño relativo

android:layout_centerInParent="true"

y para otro diseño

android:gravity="center" 

En RelativeLayout , será agradable con él.

Y otro Button y cualquier otra cosa que puedas 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>

Utilizar 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:

Usa esto dentro de la clase Java

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Como muchas respuestas sugieren arriba funciona bien.

android:gravity="center"

Si quieres centrarlo solo verticalmente:

android:gravity="center_vertical"

o simplemente horizontalmente:

android:gravity="center_horizontal"

Supongo que estás utilizando un 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 acuerdo con su necesidad.

y como @stealthcopter comentó en java: .setGravity(Gravity.CENTER);


Si la altura y el ancho de TextView's son wrap content TextView entonces el texto dentro de TextView siempre estará centrado. Pero si el ancho de match_parent es match_parent y height es match_parent o wrap_content entonces debes escribir el siguiente código:

Para RelativeLayout:

<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:

<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>

android:gravity="center_horizontal" para alinear el texto Centro horizontalmente. android:gravity="center_vertical" para alinear el centro del texto verticalmente. android:gravity="center" para alinear el texto Centro tanto vertical como horizontalmente.

<TextView
        android:layout_width="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:layout_height="match_parent" />

Aplicar la 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"        
/>

Simplemente puede establecer la gravity de su vista de texto en CENTER .


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>

Para el 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 Relative Layout: en XML usa 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);

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"/>

También puedes utilizar la combinación:

android:gravity="left|center"

Luego, si el ancho de la vista de texto es más que "fill_parent", el texto aún se alineará hacia la izquierda (no centrado, como con la gravedad establecida solo en "center").


La gravedad de TextView funciona según su diseño principal.

LinearLayout :

Si usas LinearLayout, encontrarás dos atributos de gravedad android: gravity y android: layout_gravity

android: gravedad: 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 en el centro horizontal y vertical, utilice 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>

Relacionamiento relativo :

Usando RelativeLayout puedes usar la propiedad de abajo en TextView

android: gravity = "center" para el centro de texto en TextView.

android: gravity = "center_horizontal" texto interno si quieres centrado horizontalmente.

android: gravity = "center_vertical" texto interno si desea centrado verticalmente.

android: layout_centerInParent = "true" si desea que TextView esté en la posición central de la vista principal. android: layout_centerHorizontal = "true" si desea que TextView esté horizontalmente en el centro de la vista principal. android: layout_centerVertical = "true" si desea que TextView esté verticalmente en el centro 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>






textview