Domanda

Come posso centrare il testo orizzontalmente e verticalmente in un TextView , in modo che appaia esattamente al centro del TextView in Android ?

È stato utile?

Soluzione

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

Altri suggerimenti

android:gravity="center" 

Questo farà il trucco

Puoi anche configurarlo dinamicamente usando:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"

Funziona quando utilizzato con un RelativeLayout in cui l'altezza del layout & amp; larghezza è impostata su wrap_content.

Puoi anche usare la combinazione:

android:gravity="left|center"

Quindi, se la larghezza della visualizzazione del testo è superiore a " fill_parent " il testo sarà comunque allineato a sinistra (non centrato come se la gravità fosse impostata solo su "centro").

Applica 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"        
/>

Se si utilizza TableLayout, assicurarsi di impostare anche la gravità di TableRows al centro. Altrimenti non funzionerà. Almeno non ha funzionato con me fino a quando 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>

Esistono due modi per farlo.

Il primo nel codice XML. Devi prestare attenzione all'attributo Gravity . È 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 possibili valori, anche i loro risultati.

Devi impostare Gravità TextView (orizzontale centrale e verticale centrale) 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);

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 usa qualcosa del genere

<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 eseguire questa operazione in fase di esecuzione, utilizzare qualcosa del genere 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 eseguire questa operazione in fase di esecuzione, utilizzare qualcosa del genere 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

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

Mentre si utilizza Gravity 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.

Se l'altezza e la larghezza del TextView sono avvolgere il contenuto , il testo all'interno del TextView sarà sempre centrato. Ma se la larghezza del TextView è match_parent e l'altezza è match_parent o wrap_content , 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>

In RelativeLayout , sarà piacevole con esso.

E un altro pulsante 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>

Il modo più semplice (che è sorprendentemente menzionato solo nei commenti, quindi perché sto postando come risposta) è:

textview.setGravity(Gravity.CENTER)

Puoi semplicemente impostare gravità della 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>

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

Come molte risposte suggerite sopra funziona bene.

android:gravity="center"

Se vuoi centrarlo solo in verticale:

android:gravity="center_vertical"

o solo in orizzontale:

android:gravity="center_horizontal"

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

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

L'altezza e la larghezza di TextView sono a capo automatico, quindi il testo all'interno della vista di testo deve sempre essere 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>

Anche per LinearLayout 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 del genere 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);

La gravità di TextView funziona secondo il layout principale.

LinearLayout :

Se usi LinearLayout troverai due attributi di gravità android: gravità e amp; 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.

 inserisci qui la descrizione dell'immagine

Se vuoi impostare il testo in orizzontale & amp; centrare verticalmente quindi utilizzare il codice seguente

<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: gravità = " centro " per il centro di testo in TextView.

android: gravità = " center_horizontal " testo interno se si desidera centrare orizzontalmente.

android: gravità = " center_vertical " testo interno se si desidera centrare verticalmente.

android: layout_centerInParent = " allineare " se si desidera TextView nella posizione centrale della vista padre. android: layout_centerHorizontal = " allineare " se si desidera TextView al centro in orizzontale della vista padre. android: layout_centerVertical = " allineare " 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>

android: gravity = " center_horizontal " per allineare il testo al centro in orizzontale. android: gravity = " center_vertical " per allineare il testo al centro in verticale. android: gravity = " center " per allineare il centro del testo sia in verticale che in orizzontale.

<TextView
        android:layout_width="match_parent"
        android:gravity="center_horizontal|center_vertical"
        android:layout_height="match_parent" />

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>

usa il codice qui sotto in xml ha funzionato per me puoi cambiare l'orientamento che sarà al 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top