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
?
30 answers
<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);
android:gravity="center"
Isto vai resultar.
Pode também montá-lo dinamicamente usando:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
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.
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").
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"
/>
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>
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);
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.
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.
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);
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);
Use isto para a disposição relativa
android:layout_centerInParent="true"
E para outra disposição
android:gravity="center"
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.
In RelativeLayout
, it will be nice with it.
E outro Button
e qualquer outra coisa que possa adicionar.
<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>
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>
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)
Pode definir o gravity
da sua vista de texto em CENTER
.
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>
<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 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"/>
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"
Simplesmente, no seu ficheiro XML, configure a gravidade da vista de texto para o centro:
<TextView
android:gravity="center" />
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);
Você pode fazer assim para obter o texto centrado
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
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);
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" />
<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>
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>
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.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>