android - studio - ¿Cómo centrar el texto horizontal y verticalmente en un TextView?
como centrar un texto en un textview android studio (30)
¿Cómo centrar el texto horizontal y verticalmente en un TextView
, para que aparezca exactamente en el medio de TextView
en Android
?
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"
/>
Aquí está mi respuesta que había utilizado 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" />
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"
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>
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.
Hay dos maneras de hacer esto.
El primero en el código XML. Necesitas prestar atención en el Atributo de Gravity
. También puede encontrar este atributo en el Editor gráfico; puede ser más fácil que el editor de 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ás todos los valores posibles, incluso ver sus resultados.
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>
La altura y el ancho de TextView son contenido de la envoltura, entonces el texto dentro de la vista de texto siempre debe estar centrado, luego centre 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 de forma pro-gramática, el padre es RelativeLayout. Este código en tiempo de ejecución usa 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);
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)
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>
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.
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);
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);
Puedes hacer esto para centrar el texto.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
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>
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>
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"/>
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>
Simplemente puede establecer la gravity
de su vista de texto en CENTER
.
Simplemente, en su archivo XML, configure la gravedad de la vista de texto en el centro:
<TextView
android:gravity="center" />
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);
También puedes configurarlo dinámicamente usando:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
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").
Use el siguiente código en xml. Me funcionó. Puede cambiar la orientación 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>
Use esto para el diseño relativo
android:layout_centerInParent="true"
y para otro diseño
android:gravity="center"
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);
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" />
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
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.