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



15 Answers

android:gravity="center" 

Questo farà il trucco

studio bold programmatically

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




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.




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



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



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.




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.




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>



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




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



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"



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



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



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>



La gravità di TextView funziona secondo il tuo layout genitore.

LinearLayout :

Se usi LinearLayout, troverai due attributi di gravità: android e gravità: layout_gravity

android: gravità: rappresenta la pozione di layout del testo interno di TextView mentre android: layout_gravity: rappresenta la posizione di TextView nella visualizzazione padre.

Se vuoi impostare il testo orizzontalmente e verticalmente al centro, usa questo codice qui 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 :

Usando RelativeLayout puoi usare la proprietà sottostante in TextView

android: gravità = "centro" per centro testo in TextView.

android: gravità = testo interno "center_horizontal" se vuoi centrato orizzontalmente.

android: gravità = testo interno "center_vertical" se vuoi centrato verticalmente.

android: layout_centerInParent = "true" se vuoi TextView in posizione centrale della vista genitore. android: layout_centerHorizontal = "true" se vuoi TextView in centro orizzontale della vista genitore. android: layout_centerVertical = "true" se vuoi TextView nel centro verticale della vista genitore.

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



Related