android example - Come posso centrare il testo orizzontalmente e verticalmente in un TextView?





settext studio (26)


È necessario impostare TextView Gravity (Center Horizontal e 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);

Come faccio a centrare il testo orizzontalmente e verticalmente in un TextView , in modo che appaia esattamente nel mezzo di TextView in Android ?




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>



Puoi anche configurarlo in modo dinamico usando:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);



Possiamo raggiungere questo obiettivo con questi molteplici modi: -

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 il contenuto di avvolgimento, quindi il testo all'interno della vista testo deve sempre essere centrato, quindi creare il centro nel suo 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 in modo pro grammatico il genitore è RelativeLayout codice java questo in fase di esecuzione utilizzare qualcosa di simile nella vostra 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);



Puoi fare così per ottenere il centraggio del testo

<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center" />



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 stai usando LinearLayout

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/stringname"
    android:layout_gravity="center"/>



Come molte risposte suggeriscono sopra funziona bene.

android:gravity="center"

Se vuoi centrarlo solo in verticale:

android:gravity="center_vertical"

o solo orizzontalmente:

android:gravity="center_horizontal"



Se l'altezza e la larghezza del TextView's sono wrap content il testo all'interno del TextView sempre essere centrato. Ma se la larghezza TextView's è match_parent e height è match_parent o wrap_content allora devi scrivere il codice seguente:

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

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



Se stai usando TableLayout assicurati di impostare anche la gravità delle TableRows al centro. Altrimenti non funzionerà. Almeno non ha funzionato con me fino a quando non ho impostato la gravità del 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>



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



Mentre si usa Gravity per TextView, c'è un metodo alternativo implementato nel livello API 17 -

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

Non so la differenza, ma funziona anche. Tuttavia, solo per livello API 17 o superiore.




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



Puoi semplicemente impostare la gravity della tua visualizzazione di testo in CENTER .




Per il layout lineare: in XML usa 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 farlo in fase di esecuzione, usa qualcosa di simile nella tua attività

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

Per Layout relativo: in XML usa alcune cose come questa

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



android:gravity="center" 

Questo farà il trucco




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

textview.setGravity(Gravity.CENTER)



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



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>



Semplicemente, nel tuo file XML, imposta la gravità del testo al centro:

<TextView
    android:gravity="center" />



In RelativeLayout , sarà bello con esso.

E un altro Button e qualsiasi altra cosa tu possa aggiungere.

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



utilizzare il codice seguente in xml ha funzionato per me è possibile modificare 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>



android:layout_centerInParent="true"

Funziona quando viene utilizzato con un RelativeLayout in cui l'altezza e la larghezza del layout sono impostate su wrap_content.




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 gravity center_vertical o center_horizontal base alle tue necessità.

e come @stealthcopter ha commentato in java: .setGravity(Gravity.CENTER);




Usalo per il layout relativo

android:layout_centerInParent="true"

e per altri layout

android:gravity="center" 



Se vuoi aggiungere un link simile a HTML, tutto ciò che devi fare è:

  • aggiungi una stringa HTML simile a una risorsa:

     <string name="link"><a href="https://www.google.pl/">Google</a></string>
    
  • aggiungi la tua vista al layout con NESSUNA configurazione specifica per il collegamento affatto:

     <TextView
        android:id="@+id/link"
        android:text="@string/link" />`
    
  • aggiungi MovementMethod appropriato al tuo TextView a livello di codice:

     mLink = (TextView) findViewById(R.id.link);
     if (mLink != null) {
       mLink.setMovementMethod(LinkMovementMethod.getInstance());
     }
    

Questo è tutto! E sì, avere opzioni come "autoLink" e "linksClickable" che funzionano solo su collegamenti espliciti (non racchiuse in tag html) è molto fuorviante anche per me ...





android textview