Como centralizo o texto horizontalmente e verticalmente em um TextView
, para que ele apareça exatamente no meio do TextView
in Android
?
Como centralizo o texto horizontalmente e verticalmente em um TextView
, para que ele apareça exatamente no meio do TextView
in Android
?
Respostas:
Suponho que você esteja usando o layout XML.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
Você também pode usar a gravidade center_vertical
ou de center_horizontal
acordo com sua necessidade.
e como @stealthcopter comentou em java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Ele ainda aparece na extrema esquerda da tela. :(
android:layout_gravity="center"
, o que faz outra coisa.
android:gravity="center"
Isto irá fazer o truque
Você também pode configurá-lo dinamicamente usando:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Isso funciona quando usado com um RelativeLayout em que a altura e a largura do layout são definidas como wrap_content.
TextView
. O texto será de largura total e com várias linhas e justificado à esquerda no TextView
. Aparecerá justificado à esquerda no visor. Você deve usar "gravidade", conforme especificado nas outras respostas.
Aplique gravidade:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
Para 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"
/>
Há duas maneiras de fazer isso.
O primeiro no código XML. Você precisa prestar atenção no Gravity
atributo. Você também pode encontrar esse atributo no Editor gráfico; pode ser mais fácil que o XML EDITOR.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
Para o seu cenário específico, os valores da gravidade serão:
center_vertical|center_horizontal
No editor gráfico, você encontrará todos os valores possíveis e até os resultados.
Se você estiver usando o TableLayout, certifique-se de definir também a gravidade das TableRows. Caso contrário, não funcionará. Pelo menos não funcionou comigo até eu definir a gravidade do TableRow para o 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>
Você precisa definir a Gravidade do TextView (centro horizontal e centro vertical) assim:
android:layout_centerHorizontal="true"
e
android:layout_centerVertical="true"
E usando dinamicamente:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout_centerhorizontal
e layout_centervertical
por layout_centerHorizontal
e layout_centerVertical
("H" e "V" para maiúsculas, caso contrário, não funcionará).
Na minha opinião,
android:gravity="center"
é melhor que,
android:layout_centerInParent="true"
o que é melhor que,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
pelo menos para formatar o texto.
Para layout linear: em XML, use algo como isto
<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 isso em tempo de execução, use algo como isto em sua atividade
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Para layout relativo: em XML, use algo parecido com isto
<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 isso em tempo de execução, use algo como isto em sua atividade
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);
Use no arquivo XML.
Arquivo de layout
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
ou:
Use isso dentro da classe Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Use isso para o layout relativo
android:layout_centerInParent="true"
e para outro layout
android:gravity="center"
Se a TextView's
altura e a largura forem wrap content
, o texto TextView
sempre estará centralizado. Mas se a TextView's
largura é match_parent
e a altura é match_parent
ou, wrap_content
então, você deve escrever o código abaixo:
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>
Enquanto o uso da gravidade funciona para o TextView, há 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 17 da API ou superior.
Em RelativeLayout
, será bom com isso.
E outro Button
e qualquer outra coisa que você 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>
Você pode apenas definir o gravity
da sua visualização de texto CENTER
.
Se você está tentando centralizar o texto em um TableRow em um TableLayout, eis como eu consegui isso:
<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>
Usar android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
Aqui está a minha resposta que eu tinha usado no meu aplicativo. Mostra o 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" />
Se você estiver usando o Layout Relativo:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
Se você estiver usando LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Simplesmente, no seu arquivo XML, defina a gravidade do textview no centro:
<TextView
android:gravity="center" />
Você pode fazer assim para centralizar o texto
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
A altura e a largura do TextView são agrupadas, o texto na visualização de texto sempre é centralizado e, em seguida, é centralizado no layout pai 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 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 pai pro gramatical é o código Java RelativeLayout, isso em tempo de execução, use algo assim em sua atividade
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 conseguir isso de várias maneiras:
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);
A gravidade do TextView funciona de acordo com o layout pai.
LinearLayout :
Se você usar o LinearLayout, encontrará dois atributos de gravidade android: gravity e android: layout_gravity
android: gravidade: representa a poção de layout do texto interno do TextView enquanto android: layout_gravity: representa a posição do TextView na visualização pai.
Se você deseja definir o texto na horizontal e na vertical, use o código abaixo
<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, você pode usar a propriedade abaixo no TextView
android: gravity = "center" para o centro de texto no TextView.
android: gravity = "center_horizontal" texto interno, se você quiser centralizado horizontalmente.
android: gravity = "center_vertical" texto interno, se você deseja centralizar verticalmente.
android: layout_centerInParent = "true" se você deseja TextView na posição central da visualização pai. android: layout_centerHorizontal = "true" se você quiser o TextView no centro horizontal da visualização pai. android: layout_centerVertical = "true" se você quiser o TextView no centro vertical da visualização pai.
<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>
Tente 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>