Pregunta ¿Cómo centro el texto horizontal y verticalmente en un TextView?


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


1684
2018-01-11 00:27


origen


Respuestas:


Supongo que estás usando el diseño XML.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

También puedes usar la gravedad center_vertical o center_horizontal de acuerdo a tu necesidad

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


2646
2018-01-11 01:53



android:gravity="center" 

Esto hará el truco


394
2018-02-08 22:54



También puede configurarlo dinámicamente usando:

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

268
2017-11-21 12:25



android:layout_centerInParent="true"

Esto funciona cuando se usa con RelativeLayout donde el alto y el ancho del diseño se establecen en wrap_content.


97
2017-11-11 00:58



También puedes usar la combinación:

android:gravity="left|center"

Luego, si el ancho de la vista de texto es más que "fill_parent", el texto seguirá alineado a la izquierda (no centrado como con la gravedad ajustada solo a "centro").


68
2018-01-01 20:11



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

44
2018-05-30 05:34



Si está utilizando TableLayout, asegúrese de establecer también la gravedad de las TableRows en el centro. De lo contrario, no funcionará. Al menos no funcionó conmigo hasta que establecí la gravedad del 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>

35
2018-05-13 11:57



Necesitas configurar TextView Gravity (Centro Horizontal y Centro Vertical) como este:

android:layout_centerHorizontal="true"   

y

android:layout_centerVertical="true"

Y usando dinámicamente:

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

33
2018-05-15 05:03



Hay dos formas de hacer esto.

El primero en el código XML. Debes prestar atención al Gravity Atributo. También puede encontrar este atributo en el Editor de gráficos; 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.


32
2017-10-17 12:11



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.


29
2017-07-16 04:28



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

26
2018-01-03 03:58