[android] Come posso centrare il testo orizzontalmente e verticalmente in un TextView?



Answers

android:gravity="center" 

Questo farà il trucco

Question

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




<TextView
android:id="+@id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
/>



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

textview.setGravity(Gravity.CENTER)



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



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



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



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.




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.




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>



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>



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



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



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.




android:gravity="center_horizontal" per allineare il testo Centro orizzontalmente. android:gravity="center_vertical" per allineare il testo Centro verticalmente. android:gravity="center" per allineare il testo Centro sia verticalmente che orizzontalmente.

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



Related