How do I center the text horizontally and vertically in a TextView
, so that it appears exactly in the middle of the TextView
in Android
?

- 13,617
- 16
- 88
- 129

- 279,434
- 135
- 377
- 622
-
15set both layout_width and layout_height to fill_parent, then set gravity to center. That'll do the trick – DbxD Jun 25 '15 at 09:39
-
5fill_parent is deprecated now so use MATCH_PARENT in layout_width and layout_height and set gravity of the TextView to center. – Bilal Ahmad Jun 30 '18 at 09:58
74 Answers
I'm assuming you're using XML layout.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
You can also use gravity center_vertical
or center_horizontal
according to your need.
As @stealthcopter commented, in java: .setGravity(Gravity.CENTER);
.
And for Kotlin users, .gravity = Gravity.CENTER
-
66This doesn't work when used with a RelativeLayout where the layout's height & width are set to wrap_content – Rob Aug 17 '11 at 19:00
-
109@Rob, if the width and height are wrap_content, then technically, the text is already centered. – JoJo Nov 17 '11 at 04:06
-
4If I want to align TextView relative to another view, but it's text centered in itself? – Mar 10 '12 at 21:43
-
1If you're a minimalist like me you can drop the layout tags. – Eugene van der Merwe Jul 23 '12 at 20:20
-
10This isn't working for me (`android:gravity="center"`). It still shows at far left of screen. :( – uSeRnAmEhAhAhAhAhA Sep 20 '13 at 08:00
-
1it sounds like your Textviews width and height are set to wrap_content. If this is the case you can set layout_gravity to center – Daniel Jonker Jul 09 '14 at 04:15
-
40Not to be confused with `android:layout_gravity="center"`, which does something else. – Rudi Kershaw Dec 22 '14 at 14:28
-
3In a Relative Layout if you set: `android:layout_width="wrap_content"` `android:layout_height="wrap_content"` and `android:gravity="center"` that works for me. – bheatcoker Mar 19 '15 at 10:04
-
1gravity=center not working. Textview height=34dp and width=100dp.Please help – user3207655 Nov 03 '15 at 06:18
-
4Don't forget, there is also `center_veritcal` and `center_horizontal`. – Jeel Shah Aug 13 '16 at 16:55
-
2
-
1you can also set manually the height and width to certain value to implement gravity. – Moses Aprico Sep 07 '16 at 05:51
-
2I needed to make sure the height was set to `match_parent` before I could get `gravity="center"` to work vertically in addition to working horizontally. (because if I left it as wrap-content, even if the content was in the corner of the parent, it didn't 'look' like it was centered, even though it technically was, but the height was less than the parent) – jungledev Feb 20 '17 at 17:40
-
3The key is `android:layout_height="match_parent"` and `android:gravity="center"`. If height is "wrap_content", it won't work. – CoolMind Feb 28 '18 at 08:47
-
3That centers the TextView, the question is how to center the text inside the TextView and I believe the answer is:- ```android:textAlignment="center"``` – gareth Nov 14 '19 at 11:39
-
Technically, the text is already centered if the width and height are `wrap_content`. – Iman Sep 28 '22 at 13:53
android:gravity="center"
This will do the trick

- 6,784
- 3
- 47
- 65

- 4,867
- 1
- 15
- 2
-
36The textview has to be match_parent or fill_parent for this to work. If its wrap content, then it will not center. – Kalel Wade Aug 18 '14 at 15:59
-
9@KalelWade: centering text in a textview with wrap_content makes no sense at all. Maybe you're thinking of centering a textview in a parent view, in which case, you simiply put this line in the parent. – Mooing Duck Feb 26 '16 at 20:42
-
1@Mooing Duck Thus the reason to not use wrap content - it doesn't make sense. But when you're either coping and pasting or just rushing, you may not put two and two together. That's why I mentioned it. – Kalel Wade Feb 26 '16 at 22:04
-
3if TextView with width and height equal "wrap_content" is inside LinearLayout with width and height "match_parent" then you need to set the layout_gravity of Linear_layout. – Faisal Naseer Feb 01 '17 at 16:08
-
2@MooingDuck, when height is "wrap_content" and gravity is "center_vertical", it draws in Design (preview) as centered, but in a device it is positioned to a top. So make height "match_parent" and set gravity to "center_vertical" or "center". – CoolMind Feb 28 '18 at 08:45
-
the question is how to center the text inside the TextView and I believe the answer is:- android:textAlignment="center" – Abubakar Feb 24 '22 at 00:39
You can also set it up dynamically using:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

- 3,149
- 1
- 15
- 2
-
145
-
1What is the criteria for judgement to decide which way to choose, to write in xml or write in Java file? – kenju Aug 20 '15 at 08:49
-
3@Kenju if you want it to be easily editable and the value won't change during runtime: XML. If you must change the value realtime (for example, change the alignment when the user presses a button) then you can only do it via Java. – Gustavo Maciel Nov 06 '15 at 00:38
-
3@GustavoMaciel so, basically xml unless it needs to be modified dynamically ... Now i got it. Thanks for your simple and useful answer ! – kenju Nov 06 '15 at 00:46
android:layout_centerInParent="true"
This works when used with a RelativeLayout where the layout's height & width are set to wrap_content.
-
22
-
3This does NOT work when there is word-wrap in the `TextView`. The text will be full-width and multi-line AND LEFT-justified within the `TextView`. It will appear left-justified on the display. You should use "gravity" as specified in the other answers. – David Manpearl Apr 13 '13 at 03:04
You can also use the combination:
android:gravity="left|center"
Then, if textview width is more than "fill_parent" the text will still be aligned to left (not centered as with gravity set only to "center").

- 22,170
- 44
- 158
- 253

- 1,374
- 1
- 10
- 17
Apply gravity:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
For vertical:
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"
/>

- 2,220
- 1
- 16
- 17

- 886
- 1
- 9
- 20
There are two ways of doing this.
The first in the XML code. You need to pay attention at the Gravity
Attribute. You also can find this attribute in the Graphic Editor; it may be easier than the XML EDITOR.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
For your specific scenario, the values of gravity will be:
center_vertical|center_horizontal
In the graphical editor you will find all the possible values, even see their results.

- 18,895
- 5
- 32
- 63

- 615
- 1
- 7
- 12
If you are using TableLayout make sure to set the gravity of the TableRows to center, too. Otherwise it will not work. At least it didn't work with me until I set the gravity of the TableRow to center.
For example, like this:
<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>

- 30,738
- 21
- 105
- 131

- 3,774
- 2
- 34
- 50
-
Interesting. Have to check if that is valid for LinearLayout (the TableRow parent) as well. – Martin Aug 11 '14 at 17:28
You need to set TextView Gravity (Center Horizontal & Center Vertical) like this:
android:layout_centerHorizontal="true"
and
android:layout_centerVertical="true"
And dynamically using:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

- 30,738
- 21
- 105
- 131

- 8,621
- 10
- 63
- 98
-
Code semantics is wrong. Replace `layout_centerhorizontal` and `layout_centervertical` by `layout_centerHorizontal` and `layout_centerVertical` ("H" and "V" to uppercase, otherwise it wont work). – yugidroid Jul 31 '12 at 16:15
-
2layout_* tells the View's parent where it wants to be. Without layout_* tells the View how to place its components – Dandre Allison Oct 08 '12 at 07:36
In my opinion,
android:gravity="center"
is better than,
android:layout_centerInParent="true"
which is better than,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
at least for formatting text.

- 4,100
- 1
- 24
- 39

- 1,137
- 11
- 12
For Linear Layout: In XML use something like this
<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"
/>
To do this at run time use something like this in your activity
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
For Relative Layout: in XML use some thing like this
<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"
/>
To do this at run time use something like this in your activity
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);

- 4,195
- 2
- 42
- 53

- 1,119
- 1
- 15
- 33
Use in the XML file.
Layout file
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
or:
Use this inside the Java class
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

- 30,738
- 21
- 105
- 131

- 2,971
- 6
- 40
- 59
Use this for relative layout
android:layout_centerInParent="true"
and for other layout
android:gravity="center"
If the TextView's
height and width are wrap content
then the text within the TextView
always be centered. But if the TextView's
width is match_parent
and height is match_parent
or wrap_content
then you have to write the below code:
For 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>
For 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>

- 39
- 9

- 8,890
- 6
- 44
- 59
While using gravity works for TextView, there's an alternate method implemented in API level 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Don't know the difference, but it works too. However only for API level 17 or higher.

- 19,522
- 20
- 117
- 184
-
The difference is described here: http://stackoverflow.com/questions/16196444/text-layout-alignment-in-android-textalignment-gravity – jasdefer Jul 10 '15 at 08:08
-
This will truly center the text in the TextView. If you just use gravity, there's a bit of trailing padding depending on what the text is.... If you have a little circle badge with text in the center, for instance, you can see a very obvious difference. – tarrball Dec 26 '19 at 22:18
In RelativeLayout
, it will be nice with it.
And another Button
and anything else you can add.
The following works nicely for 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>

- 1,954
- 1
- 17
- 25

- 12,075
- 10
- 46
- 54
Use android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>

- 3,310
- 3
- 25
- 41
-
textAlignment="center" won't do the job until the TextView has dimensions to match_parent – SAurabh Jun 18 '19 at 06:55
-
-
is it working without gravity to parent or layout gravity in itself? It won't Text alignment will align the text within its view bounds so until the textView takes match_parent in this case it it won't seem like this without gravity in its parent layout or layout_gravity in itself – SAurabh Sep 20 '19 at 07:30
You can just set the gravity
of your textview into CENTER
.

- 18,895
- 5
- 32
- 63

- 173
- 2
- 8
Easiest way (which is surprisingly only mentioned in comments, hence why I am posting as an answer) is:
textview.setGravity(Gravity.CENTER)

- 18,150
- 17
- 114
- 198
TextView gravity works as per your parent layout.
LinearLayout:
If you use LinearLayout then you will find two gravity attribute android:gravity & android:layout_gravity
android:gravity : represent layout potion of internal text of TextView while android:layout_gravity : represent TextView position in parent view.
If you want to set text horizontally & vertically center then use below code this
<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:
Using RelativeLayout you can use below property in TextView
android:gravity="center" for text center in TextView.
android:gravity="center_horizontal" inner text if you want horizontally centered.
android:gravity="center_vertical" inner text if you want vertically centered.
android:layout_centerInParent="true" if you want TextView in center position of parent view. android:layout_centerHorizontal="true" if you want TextView in horizontally center of parent view. android:layout_centerVertical="true" if you want TextView in vertically center of parent view.
<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>

- 510
- 3
- 13
-
Btw, any reason you rollbacked to the previous revision? The revision that you reverted is a good practice so that as what the editor has mentioned can help text editors with encoding. – Edric Mar 27 '19 at 12:12
-
Thank you for `android:gravity="center_horizontal"` and `android:layout_gravity="center_vertical"` – Chaki_Black Feb 05 '22 at 13:02
If you are trying to center text on a TableRow in a TableLayout, here is how I achieved this:
<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>

- 4,215
- 2
- 37
- 43
If you are using Relative Layout:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
If you are using LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>

- 1,879
- 2
- 22
- 28
Try this way,it will work
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"/>
</LinearLayout>
Here is my answer that I had used in my app. It shows text in center of the screen.
<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" />

- 30,738
- 21
- 105
- 131

- 8,011
- 6
- 25
- 23
The TextView's height and width are wrap content then the text within the textview always be centered, then make center in its parent layout by using:
<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>
For LinearLayout also the code is same :
<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>
and pro-grammatically parent is RelativeLayout java code this at run time use something like this in your activity
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);

- 1,158
- 13
- 17
Actually, we can do better by excluding fontPadding.
<TextView
android layout_height="wrap_content"
android layout_height="wrap_content"
android:includeFontPadding="false"
android:textAlignment="center"
/>

- 1,076
- 1
- 11
- 24
As many answers suggest above works fine.
android:gravity="center"
If you want to center it just vertically:
android:gravity="center_vertical"
or just horizontally:
android:gravity="center_horizontal"

- 5,749
- 10
- 55
- 99
Simply, in your XML file, set the textview gravity to center:
<TextView
android:gravity="center" />

- 30,738
- 21
- 105
- 131

- 89
- 1
- 1
android:gravity="center_horizontal"
for align text Center horizontally.
android:gravity="center_vertical"
for align text Center vertically.
android:gravity="center"
for align text Center both vertically and horizontally.
<TextView
android:layout_width="match_parent"
android:gravity="center_horizontal|center_vertical"
android:layout_height="match_parent" />

- 1,087
- 1
- 11
- 24
You can do like this to get text centered
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />

- 397
- 1
- 6
- 11
We can achieve this with these multiple ways:-
XML method 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"
/>
XML method 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"
/>
XML method 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
XML method 04
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:text="@strings/text"
/>
Java method 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Java method 02
textview.setGravity(Gravity.CENTER);
Java method 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

- 4,326
- 2
- 18
- 29

- 177
- 1
- 12
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_height="wrap_content">
<TextView
android:id="@+id/failresults"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:gravity="center_vertical|center_horizontal"
android:text=""
android:textSize="12sp" />
</LinearLayout>
if you have textview inside linearlayout, you need set them both gravity to center

- 557
- 7
- 11
I don't think, You really need to do that just define your TextView in layout file like this
<RelativeLayout
android:layout_width="width"
android:layout_height="height">
<TextView
android:id="@+id/yourid"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your text" />
</RelativeLayout>

- 1,206
- 14
- 27
Set the gravity attribute in the layout file as
android:gravity="center"

- 18,895
- 5
- 32
- 63

- 341
- 3
- 4
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HELLO"
android:textColor="@color/colorPrimaryDark"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
If you are making your text view width and height to wrap content then you have to manage it's position via layout gravity according to the parent supported attributes. Else you can do.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>

- 1,765
- 15
- 26
For kotlin:
If you want to center your TextView
from code:
textView.gravity = Gravity.CENTER
If you want to horizontally
center:
textView.gravity = Gravity.CENTER_HORIZONTAL
Or, vertically
center:
textView.gravity = Gravity.CENTER_VERTICAL

- 4,389
- 27
- 43
<TextView
android:id="+@id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
/>

- 2,223
- 1
- 24
- 22
Did you try this way?
<TextView
android:id="+@id/txtVw"
android:gravity="center"
/>

- 13,409
- 16
- 61
- 96

- 97
- 7
use the below code in xml it worked for me you can change the orientation it will be in the centre
<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>

- 628
- 2
- 9
- 19
Use android:gravity="center"
to resolve your issue.

- 3,747
- 4
- 27
- 53

- 211
- 3
- 6
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="In the center"/>
Above is to set it using .xml file.
but I prefer java version because you can also disable it in code while in running condition if necessary. Following is java code.
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:textAlignment="center"
this will do the trick

- 29,388
- 11
- 94
- 103

- 21
- 4
-
1While this code may answer the question, providing additional context regarding how and/or why it solves the problem would improve the answer's long-term value. You can find more information on how to write good answers in the help center: https://stackoverflow.com/help/how-to-answer . Good luck – nima Oct 09 '21 at 07:40
For the layout of text, it is better to use
android:textAlignment="center"
and for the other layout of objects etc, it's good to use
android:gravity="center"

- 53
- 6
as mentioned in other answers, you can set gravity in xml with:
android:gravity="center"
and in java code :
textview.setGravity(Gravity.CENTER)
in kotlin code :
textview.gravity = Gravity.CENTER
but if you are doing this in kotlin compose, you can center gravity using :
textAlign = TextAlign.Center

- 147
- 8
If you are working with RelativeLayout
, try using this property inside your TextView
tag :
android:layout_centerInParent= true

- 3,747
- 4
- 27
- 53

- 171
- 2
- 14
try this :
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>

- 839
- 2
- 13
- 16
I have added xml snippet to make a textview center alligned in both Linear and Relative Layout.
In Linear Layout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text In Center"
android:layout_gravity="center"
android:gravity="center"/>
In Relative Layout
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Text In Center"
android:layout_centerInParent= true/>

- 4,326
- 2
- 18
- 29
Let's say Full Textview in screen
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hello World!"
android:gravity="center"
/>
Let's say Textview(not full) in Relative layout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_centerInParent=true
/>
Let's say Textview(not full) in Linear_layout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="centre"
/>
Via .xml
file gravity can be set to center as follows
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="In the center"
/>
Via java following is the way you can solve your particular issue
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

- 6,108
- 2
- 32
- 40

- 271
- 2
- 13
You can set the gravity to center vertical and textalignment to center.
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center_vertical"
android:textAlignment="center" />

- 185
- 3
- 11
android:gravity="center"
This line in xml would help you to center the TextView
.

- 59
- 6

- 275
- 2
- 7
You must set the Gravity like this:
(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

- 394
- 5
- 16
Try this:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />

- 394
- 5
- 16
Try this:
Using LinearLayout if you are using textview height and width match_parent You can set the gravity text to center and text alignment to center text horizontal if you are using textview height and width wrap_content then add gravity center attribute in your LinearLayout.
XML Code
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAlignment="center"
android:gravity="center"
android:textColor="#000"
android:textSize="30sp"
android:text="Welcome to Android" />
</LinearLayout>
Java code
You can programatically do like this:-
(textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Thank you

- 8,956
- 2
- 21
- 35
Honorable Mention for the Belated GUI
I wanted to add some value to this already fantastic thread. And finally after 11 years we now have a way to drag and drop the TextView from the toolbox and select gravity through a GUI Properties box. AND, thankfully the GUI combines the properties concisely as "center_vertical|center_horizontal".
<TextView
android:text="This is my sample text."
android:layout_width="match_parent"
android:layout_height="35.7dp"
android:id="@+id/textView2"
android:layout_marginBottom="24.7dp"
android:typeface="sans"
android:textSize="20"
android:gravity="center_vertical|center_horizontal" />

- 333
- 2
- 11
Rearranging the location of the layout, image or textview comes under the topic of alignment. so if you want to put your image src in middle vertically, you should use the code below written
android:layout_centerVertical="true"
and for center Horizontally
android:layout_centerHorizontal="true"
or else, I think we can also use gravity to put every element in mid of parent layout like android:gravity="center"

- 3,752
- 35
- 31
- 35

- 107
- 5
To show text in the center like:
------------------>text<-------------------
Use these styles:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_contect"
android:gravity="center"
android:text="@string/text"
/>
android:gravity="center"

- 239,200
- 50
- 490
- 574

- 1,088
- 8
- 17
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Tours"
android:id="@+id/textView" />

- 2,978
- 26
- 31
And for those wondering how to center it vertically in its TextView element while keeping it on the left (horizontally) :
android:gravity="center"
android:textAlignment="viewStart"

- 2,188
- 18
- 30
There are 2 ways to do this :
1. From Xml
use :
<TextView
.........
android:gravity="center"/>
2. From Java class
use :
[textview].setGravity(Gravity.CENTER);

- 739
- 8
- 18
You can center a Text View using android:gravity="center"
The code goes as follows
<TextView
android:text="@string/yourText"
android layout_height="wrap_content"
android layout_height="wrap_content"
android:gravity="center" />

- 65
- 10
If that TextView doesn't have the height / width attributes set to wrap_content
, just use android:gravity="center"
. But some people complain that using that does not work. That's because their layout doesn't have the same gravity. You can set
android:layout_gravity="center"
IN THE TEXTVIEW (this will apply only to the TextView)
or
android:gravity="center"
IN THE PARENT LAYOUT (this will apply to all the views inside it)

- 545
- 1
- 7
- 27
In ConstraintLayout for any view:
(When you are using a constraint layout, set height & width to 0, and let the constraint to manage view bounds.)
<View
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

- 30,738
- 21
- 105
- 131

- 12,743
- 6
- 56
- 63
How to center a view or its content e.g. TextView or Button horizontally and vertically? layout_gravity can be used to position a view in the center of its parent. While gravity attribute is used to position view’s content e.g. “text” in the center of the view.
( 1 ) Center TextView Horizontally
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="10dp"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="center"
android:background="#333"
android:textColor="#fff"
/>
</LinearLayout>
( 2 ) Center TextView Vertically
android:layout_gravity=”center_vertical” dose not work!!
To center TextView vertically, you need to make a trick. Place TextView inside a RelativeLayout then set the TextView attribute android:layout_centerInParent=”true”
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="10dp"
tools:context=".MainActivity" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical"
android:gravity="center"
android:background="#333"
android:textColor="#fff"
/>
</RelativeLayout>
( 3 ) Center Text Horizontally
android:gravity=”center_horizontal"
( 4 ) Center Text Horizontally & Vertically
android:gravity=”center” this will center the text horizontally and vertically
<TextView android:layout_width="fill_parent" android:layout_height="100dp" android:text="Hello World!" android:gravity="center" android:background="#333" android:textColor="#fff" />

- 1,528
- 11
- 28
Use Gravity Property in the TextView to center the Text Vertically and Horizontally.
android:gravity="center"

- 140
- 2
- 8
use android:gravity="center" to parent
<LinearLayout
android:layout_width="200dp"
android:layout_height="200dp"
android:gravity="center"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello world"
/>
</LinearLayout>

- 427
- 4
- 13
Here is solution.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="**Your String Value**" />

- 411
- 11
- 16
You can changeandroid:gravity
for this.
android:gravity="center"
or
if you want to center horizontal or vertical
android:gravity="center_horizontal"
android:gravity="center_vertical"

- 5,336
- 7
- 36
- 59
You can programatically do this in java with: textview.setGravity(Gravity.CENTER);

- 246
- 1
- 14
Textview width and height should be match_parent and add android:gravity="center" in your textview attributes.

- 229
- 1
- 4
- 19
If you have only one single TextView into your XML file then you can make the parent view gravity as the centre. This will make your child element in the centre of the screen and then you can make your child view as a wrap for both height and width.

- 1,615
- 12
- 9
Font padding can also affect the position of text you can remove it by adding includefontpadding=false
<TextView
android:includeFontPadding="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />

- 139
- 5