Domanda Come posso centrare il testo orizzontalmente e verticalmente in un TextView?


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


1683
2018-01-11 00:27


origine


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 in base alle tue necessità.

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


2645
2018-01-11 01:53



android:gravity="center" 

Questo farà il trucco


394
2018-02-08 22:54



Puoi anche configurarlo in modo dinamico usando:

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

268
2017-11-21 12:25



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.


97
2017-11-11 00:58



Puoi anche usare la combinazione:

android:gravity="left|center"

Quindi, se la larghezza della vista testo è maggiore di "fill_parent", il testo sarà comunque allineato a sinistra (non centrato come con la gravità impostata solo su "centro").


68
2018-01-01 20:11



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

44
2018-05-30 05:34



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>

35
2018-05-13 11:57



È necessario impostare TextView Gravity (Centro orizzontale e centro verticale) come questo:

android:layout_centerHorizontal="true"   

e

android:layout_centerVertical="true"

E usando dinamicamente:

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

33
2018-05-15 05:03



Ci sono due modi per farlo.

Il primo nel codice XML. Devi prestare attenzione al Gravity Attributo. Puoi anche trovare questo attributo nell'Editor grafico; potrebbe essere più facile dell'EDITOR XML.

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


32
2017-10-17 12:11



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.


29
2017-07-16 04:28



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

26
2018-01-03 03:58