Pregunta

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

¿Fue útil?

Solución

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 sus necesidades.

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

Otros consejos

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 del diseño & amp; ancho se establece en wrap_content.

También puede usar la combinación:

android:gravity="left|center"

Entonces, 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").

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

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>

Hay dos formas de hacer esto.

El primero en el código XML. Debe prestar atención al atributo Gravity . 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 gravedad serán:

center_vertical|center_horizontal

En el editor gráfico encontrará todos los valores posibles, incluso verá sus resultados.

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

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 usa 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);

Uso 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 el diseño relativo

android:layout_centerInParent="true"

y para otro diseño

android:gravity="center" 

Mientras que el uso de la gravedad funciona para TextView, hay un método alternativo implementado en el nivel API 17 -

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

No sé la diferencia, pero también funciona. Sin embargo, solo para API nivel 17 o superior.

Si la altura y el ancho de TextView son wrap content , el texto dentro de TextView siempre estará centrado. Pero si el ancho de TextView es match_parent y la altura es match_parent o wrap_content , entonces debe 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>

En RelativeLayout , será agradable con él.

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>

La forma más fácil (que sorprendentemente solo se menciona en los comentarios, por eso publico como respuesta) es:

textview.setGravity(Gravity.CENTER)

Puede configurar la gravedad de su vista de texto en CENTER .

Si está intentando 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>

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

Como muchas respuestas sugieren anteriormente, funciona bien.

android:gravity="center"

Si desea centrarlo solo verticalmente:

android:gravity="center_vertical"

o simplemente horizontalmente:

android:gravity="center_horizontal"

Simplemente, en su archivo XML, configure la gravedad de la vista de texto en el centro:

<TextView
    android:gravity="center" />

Puede hacer esto para centrar el texto

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />

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 altura y el ancho de TextView son contenido de ajuste, luego el texto dentro de la vista de texto siempre estará centrado, luego haga el centro en su diseño principal usando:

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

TextView gravity funciona según su diseño principal.

LinearLayout :

Si usa LinearLayout, encontrará dos atributos de gravedad android: gravedad y amp; android: layout_gravity

android: gravity: representa la poción de diseño del texto interno de TextView mientras android: layout_gravity: representa la posición de TextView en la vista principal.

 ingrese la descripción de la imagen aquí

Si desea establecer el texto horizontalmente & amp; centrar verticalmente y luego usar el código siguiente

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

RelativeLayout :

Usando RelativeLayout puede usar la propiedad siguiente 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 = " verdadero " 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>

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

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

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

usa el siguiente código en xml, funcionó para mí, puedes cambiar la orientación que estará en el centro

<LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:background="@color/colorPrimaryDark"
        android:gravity="center"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/id_text"
            android:layout_width="wrap_content"
            android:textSize="18sp"
            android:textColor="@android:color/white"
            android:textStyle="normal"
            android:layout_height="wrap_content"
            android:text="centre me"/>
    </LinearLayout>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top