Como faço para centrar o texto horizontal e verticalmente numa vista de texto?

Como centrar o texto horizontalmente e verticalmente num {[[0]}, para que apareça exactamente no meio do {[[0]} em Android?

Author: Alexander Abakumov, 2009-01-11

30 answers

Presumo que estejas a usar o formato XML.
<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

Também pode usar a gravidade center_vertical ou center_horizontal de acordo com as suas necessidades.

E como @stealthcopter comentou em java: .setGravity(Gravity.CENTER);

 2702
Author: Bill, 2018-07-10 16:11:32
android:gravity="center" 
Isto vai resultar.
 405
Author: Jean, 2015-03-22 14:27:07

Pode também montá-lo dinamicamente usando:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
 273
Author: zeevb, 2009-11-21 12:25:56
android:layout_centerInParent="true"

Isto funciona quando usado com uma área relativa onde a altura e largura da disposição estão configuradas como wrap_content.

 100
Author: itherese, 2011-11-11 03:33:26

Também pode usar a combinação:

android:gravity="left|center"

Então, se a largura da vista de texto for mais do que" fill_parent", o texto ainda estará alinhado para a esquerda (não centrado como com a gravidade definida apenas para"Centro").

 69
Author: Szorstki, 2013-07-26 08:36:05

Aplicar a gravidade:

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

Para a vertical:

txtView.setGravity(Gravity.CENTER_VERTICAL);

Em XML:

<TextView      
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"
    android:text="@string/Hello_World"        
/>
 45
Author: Gaganpreet Singh, 2015-02-17 11:10:19

Se estiver a usar o TableLayout certifique-se de ajustar a gravidade das janelas para o centro, também. Caso contrário, não funcionará. Pelo menos não funcionou comigo até eu colocar a gravidade da mesa no centro.

Por exemplo, assim:

<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>
 36
Author: Maverick1st, 2014-05-13 04:49:09

Tem de definir a gravidade da vista de texto (centro Horizontal e centro Vertical) desta forma:

android:layout_centerHorizontal="true"   

E

android:layout_centerVertical="true"

E usando dinamicamente:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
 34
Author: NagarjunaReddy, 2014-05-13 04:49:52
Há duas maneiras de fazer isto.

O primeiro no código XML. Você precisa prestar atenção no atributo Gravity. Você também pode encontrar este atributo no Editor gráfico; pode ser mais fácil do que o EDITOR XML.

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text"
/>

Para o teu cenário específico, os valores da gravidade serão:

center_vertical|center_horizontal

No editor gráfico encontrará todos os valores possíveis, até mesmo os seus resultados.

 33
Author: Cristiano Guerra, 2016-09-27 13:01:40

Na minha opinião,

android:gravity="center"

É melhor que,

android:layout_centerInParent="true"

O que é melhor do que,

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

Pelo menos para formatação de texto.

 30
Author: epicness42, 2013-01-12 04:40:21

Para A Disposição Linear: Em XML use algo assim

<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 fazer isto em tempo de execução, use algo como isto na sua actividade

TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Para a disposição relativa: em XML use uma coisa como esta

<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 fazer isto em tempo de execução, use algo como isto na sua actividade

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);
 27
Author: Karthikeyan, 2016-01-19 06:33:00

Usar no ficheiro XML.

Ficheiro de disposição

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:text="@string/stringtext"/>

Ou:

Use isto dentro da classe Java

TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
 22
Author: venu, 2014-05-13 04:57:25

Use isto para a disposição relativa

android:layout_centerInParent="true"

E para outra disposição

android:gravity="center" 
 19
Author: , 2013-10-11 11:08:21

Enquanto se usa gravity works para TextView, existe um método alternativo implementado no nível 17 -

da API.
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Não sei a diferença, mas também funciona. No entanto, apenas para o nível de API 17 ou superior.
 15
Author: noob, 2013-08-24 20:50:50

In RelativeLayout, it will be nice with it.

E outro Button e qualquer outra coisa que possa adicionar.

O seguinte funciona bem para mim.
<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>
 12
Author: Yuda Prawira, 2015-04-20 15:43:03

Se a TextView's altura e largura forem wrap content, então o texto dentro do {[4] } será sempre centrado. Mas se o TextView's largura é match_parent e altura é match_parent ou wrap_content então você tem que escrever o código abaixo:

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

For 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>
 12
Author: Avijit Karmakar, 2017-08-12 15:15:59

A maneira mais fácil (o que é surpreendentemente mencionado apenas em comentários, daí porque eu estou postando como uma resposta) é:

textview.setGravity(Gravity.CENTER)
 11
Author: user1, 2015-12-15 12:38:02

Pode definir o gravity da sua vista de texto em CENTER.

 11
Author: note-knotz, 2016-09-27 13:02:15

Se está a tentar centrar o texto numa janela de uma mesa, eis como consegui isto:

<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>
 9
Author: dyslexicanaboko, 2012-07-15 02:14:08
Eis a minha resposta que usei na minha aplicação. Ele mostra texto no centro da tela.
<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" />
 9
Author: Md. Naushad Alam, 2014-05-13 04:56:27

Se estiver a utilizar a disposição relativa:

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_centerInParent="true"/>

Se estiver a utilizar LinearLayout

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_gravity="center"/>
 9
Author: Niranjan, 2015-11-15 06:33:26

Como muitas respostas sugerem acima funciona bem.

android:gravity="center"

Se quiser centrá - lo apenas verticalmente:

android:gravity="center_vertical"

Ou apenas horizontalmente:

android:gravity="center_horizontal"
 7
Author: rgamber, 2013-07-04 20:09:04

Simplesmente, no seu ficheiro XML, configure a gravidade da vista de texto para o centro:

<TextView
    android:gravity="center" />
 6
Author: Mansoor Ahmad Samar, 2014-05-13 04:54:11

A altura e a largura da janela de texto são o conteúdo da mudança de linha, pelo que o texto dentro da janela de texto será sempre centrado e, em seguida, centrar-se na sua disposição-mãe, 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 a LinearLayout também o código é o mesmo:

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

E o progenitor pro-gramaticalmente é Relativamenteaiut código java isto em tempo de execução use algo assim na sua actividade

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);
 6
Author: Attiff, 2016-03-07 13:42:51

Você pode fazer assim para obter o texto centrado

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />
 6
Author: Kamlakar Kate, 2017-06-30 09:27:32
Podemos conseguir isto de várias 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);
 6
Author: ArghadipDasCEO, 2018-06-14 10:32:20

android:gravity="center_horizontal" para alinhar o centro de texto horizontalmente. android:gravity="center_vertical" para alinhar o centro de texto verticalmente. android:gravity="center" para alinhar o centro de texto tanto na vertical como na horizontal.

<TextView
        android:layout_width="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:layout_height="match_parent" />
 4
Author: Anil, 2016-05-20 10:18:11
Tenta assim, vai 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>
 4
Author: Gabriel Eduardo Toledo, 2016-07-28 07:03:10

Use o código abaixo em xml que funcionou para mim pode mudar a orientação que estará no 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>
 3
Author: koteswara D K, 2016-12-07 10:26:56

A gravidade da vista de texto funciona de acordo com a disposição dos seus pais.

LinearLayout:

Se usar o LinearLayout então irá encontrar dois atributos de gravidade android: gravity & android: layout_ Gravity

A gravidade representa a poção de disposição do texto interno da vista de texto enquanto android : layout_ gravidade: representa a posição da vista de texto na janela-mãe.

enter image description here

Se quiser definir o texto horizontalmente e verticalmente no centro, então use abaixo do Código este

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

Perda relativa:

Ao usar o 'RelativeLayout' pode usar abaixo da propriedade em TextView

Android: gravity="center" para centro de texto em TextView.

Android: gravity=texto interno" center_ " se quiser centralizar horizontalmente.

Android: gravity=texto interno" center_ " se quiser centrado verticalmente.

Android: layout_centerinpart="true" se quiser ver texto no centro da posição dos pais visualizar. android: layout_centerHorizontal= "true" se quiser uma vista de texto no centro horizontal da vista-mãe. android: layout_ entervertical= "true" se quiser uma vista de texto no centro vertical da vista-mãe.

<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>
 3
Author: Alpesh Sorathiya, 2017-10-27 13:08:01