Come posso centrare il testo in orizzontale e verticale in a TextView
, in modo che appaia esattamente nel mezzo di TextView
in Android
?
Come posso centrare il testo in orizzontale e verticale in a TextView
, in modo che appaia esattamente nel mezzo di TextView
in Android
?
Risposte:
Suppongo che tu stia utilizzando il layout XML.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
Puoi anche usare la gravità center_vertical
o center_horizontal
secondo le tue necessità.
e come ha commentato @stealthcopter in java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Mostra ancora all'estrema sinistra dello schermo. :(
android:layout_gravity="center"
, che fa qualcos'altro.
android:gravity="center"
Questo farà il trucco
Puoi anche configurarlo in modo dinamico usando:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Funziona quando utilizzato con un RelativeLayout in cui l'altezza e la larghezza del layout sono impostate su wrap_content.
TextView
. Il testo sarà a tutta larghezza e multilinea E SINISTRA giustificato all'interno di TextView
. Apparirà giustificato a sinistra sul display. Dovresti usare la "gravità" come specificato nelle altre risposte.
Applicare gravità:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
Per verticale:
txtView.setGravity(Gravity.CENTER_VERTICAL);
In XML:
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/Hello_World"
/>
Ci sono due modi per farlo.
Il primo nel codice XML. Devi prestare attenzione Gravity
all'attributo. È inoltre possibile trovare questo attributo nell'Editor grafico; potrebbe essere più semplice di XML EDITOR.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
Per il tuo scenario specifico, i valori di gravità saranno:
center_vertical|center_horizontal
Nell'editor grafico troverai tutti i valori possibili, anche i loro risultati.
Se stai usando TableLayout assicurati di impostare anche la gravità di TableRows al centro. Altrimenti non funzionerà. Almeno non ha funzionato con me finché non ho impostato la gravità di TableRow al centro.
Ad esempio, in questo modo:
<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>
È necessario impostare TextView Gravity (Center Horizontal & Center Vertical) in questo modo:
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
con layout_centerHorizontal
e layout_centerVertical
("H" e "V" in maiuscolo, altrimenti non funzionerà).
Secondo me,
android:gravity="center"
è meglio di,
android:layout_centerInParent="true"
che è meglio di
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
almeno per la formattazione del testo.
Per layout lineare: in XML usare qualcosa di simile
<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"
/>
Per fare ciò in fase di esecuzione, utilizzare qualcosa di simile nella propria attività
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Per il layout relativo: in XML usare qualcosa del genere
<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"
/>
Per fare ciò in fase di esecuzione, utilizzare qualcosa di simile nella propria attività
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);
Utilizzare nel file XML.
File di layout
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
o:
Usalo all'interno della classe Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Usalo per il layout relativo
android:layout_centerInParent="true"
e per altri layout
android:gravity="center"
Se l' TextView's
altezza e la larghezza sono wrap content
quindi il testo all'interno di TextView
essere sempre centrato. Ma se la TextView's
larghezza è match_parent
e l'altezza è match_parent
o wrap_content
allora devi scrivere il codice seguente:
Per 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>
Per 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>
Mentre l'utilizzo della gravità funziona per TextView, esiste un metodo alternativo implementato nel livello API 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Non conosco la differenza, ma funziona anche. Tuttavia, solo per livello API 17 o superiore.
In RelativeLayout
, sarà bello con esso.
E un altro Button
e qualsiasi altra cosa che puoi aggiungere.
Quanto segue funziona bene per me.
<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>
Puoi semplicemente impostare la gravity
tua visualizzazione di testo in CENTER
.
Se stai cercando di centrare il testo su un TableRow in un TableLayout, ecco come ho ottenuto questo risultato:
<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>
Uso 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"
/>
Ecco la mia risposta che avevo usato nella mia app. Mostra il testo al centro dello schermo.
<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 si utilizza il layout relativo:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
Se si utilizza LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Semplicemente, nel tuo file XML, imposta la gravità della vista di testo al centro:
<TextView
android:gravity="center" />
Puoi fare così per centrare il testo
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
L'altezza e la larghezza di TextView sono il contenuto a capo, quindi il testo all'interno della vista di testo deve essere sempre centrato, quindi centrare il layout principale 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>
Per LinearLayout anche il codice è lo stesso:
<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 il padre pro-grammaticalmente è il codice java RelativeLayout che in fase di esecuzione usa qualcosa di simile nella tua attività
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);
Possiamo raggiungere questo obiettivo in questi modi multipli: -
Metodo 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"
/>
Metodo 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"
/>
Metodo XML 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
Metodo 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"
/>
Metodo 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);
La gravità di TextView funziona secondo il layout principale.
Disposizione lineare :
Se usi LinearLayout troverai due attributi di gravità android: gravity & android: layout_gravity
android: gravità: rappresenta la pozione di layout del testo interno di TextView mentre android: layout_gravity: rappresenta la posizione di TextView nella vista padre.
Se vuoi impostare il testo in orizzontale e in verticale al centro, usa questo codice sotto
<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 :
Utilizzando RelativeLayout è possibile utilizzare la proprietà sottostante in TextView
android: gravity = "center" per text center in TextView.
android: gravity = testo interno "center_horizontal" se vuoi centrare orizzontalmente.
android: gravity = testo interno "center_vertical" se vuoi centrare verticalmente.
android: layout_centerInParent = "true" se vuoi TextView nella posizione centrale della vista padre. android: layout_centerHorizontal = "true" se si desidera TextView nel centro orizzontale della vista padre. android: layout_centerVertical = "true" se vuoi TextView nel centro verticale della vista padre.
<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>
Prova in questo modo, funzionerà
<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>