What is the difference between gravity and layout_gravity in Android?
I know we can set the following values to the android:gravity and android:layout_gravity properties:
centercenter_verticalcenter_horizontal, etc.
But I am confused regarding both of these.
What is the difference between the usage of android:gravity and android:layout_gravity?
add a comment |
I know we can set the following values to the android:gravity and android:layout_gravity properties:
centercenter_verticalcenter_horizontal, etc.
But I am confused regarding both of these.
What is the difference between the usage of android:gravity and android:layout_gravity?
246
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity"
– Vishnu Haridas
Dec 30 '11 at 9:22
6
center == center_vertical | center_horizontal
– Yousha Aleayoub
Sep 16 '16 at 14:33
3
These videos helped me a lot to understand the difference: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
– Roni Castro
Oct 21 '16 at 5:16
ImageView's seem to behave different thanTextView's.
– samis
Aug 16 '17 at 16:42
add a comment |
I know we can set the following values to the android:gravity and android:layout_gravity properties:
centercenter_verticalcenter_horizontal, etc.
But I am confused regarding both of these.
What is the difference between the usage of android:gravity and android:layout_gravity?
I know we can set the following values to the android:gravity and android:layout_gravity properties:
centercenter_verticalcenter_horizontal, etc.
But I am confused regarding both of these.
What is the difference between the usage of android:gravity and android:layout_gravity?
edited Feb 12 at 8:57
Bernd Wilke πφ
5,2241825
5,2241825
asked Aug 14 '10 at 9:28
Paresh MayaniParesh Mayani
97.1k62223282
97.1k62223282
246
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity"
– Vishnu Haridas
Dec 30 '11 at 9:22
6
center == center_vertical | center_horizontal
– Yousha Aleayoub
Sep 16 '16 at 14:33
3
These videos helped me a lot to understand the difference: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
– Roni Castro
Oct 21 '16 at 5:16
ImageView's seem to behave different thanTextView's.
– samis
Aug 16 '17 at 16:42
add a comment |
246
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity"
– Vishnu Haridas
Dec 30 '11 at 9:22
6
center == center_vertical | center_horizontal
– Yousha Aleayoub
Sep 16 '16 at 14:33
3
These videos helped me a lot to understand the difference: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
– Roni Castro
Oct 21 '16 at 5:16
ImageView's seem to behave different thanTextView's.
– samis
Aug 16 '17 at 16:42
246
246
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity"
– Vishnu Haridas
Dec 30 '11 at 9:22
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity"
– Vishnu Haridas
Dec 30 '11 at 9:22
6
6
center == center_vertical | center_horizontal
– Yousha Aleayoub
Sep 16 '16 at 14:33
center == center_vertical | center_horizontal
– Yousha Aleayoub
Sep 16 '16 at 14:33
3
3
These videos helped me a lot to understand the difference: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
– Roni Castro
Oct 21 '16 at 5:16
These videos helped me a lot to understand the difference: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
– Roni Castro
Oct 21 '16 at 5:16
ImageView's seem to behave different than TextView's.– samis
Aug 16 '17 at 16:42
ImageView's seem to behave different than TextView's.– samis
Aug 16 '17 at 16:42
add a comment |
20 Answers
20
active
oldest
votes
Their names should help you:
android:gravitysets the gravity of the contents (i.e. its subviews) of theViewit's used on.android:layout_gravitysets the gravity of theVieworLayoutrelative to its parent.
And an example is here.
77
Basically, everything withlayout_defines something that effects the elements outside.
– Triang3l
Jun 28 '13 at 10:26
23
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
13
So what happens if theandroid:gravityis set to left and its children'sandroid:layout_gravityis set to right? which side will the children align to?
– Thupten
Mar 28 '14 at 20:52
2
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
|
show 2 more comments
Inside - Outside
gravityarranges the content inside the view.layout_gravityarranges the view's position outside of itself.
Sometimes it helps to see a picture, too. The green and blue are TextViews and the other two background colors are LinearLayouts.

Notes
- The
layout_gravitydoes not work for views in aRelativeLayout. Use it for views in aLinearLayoutorFrameLayout. See my supplemental answer for more details. - The view's width (or height) has to be greater than its content. Otherwise
gravitywon't have any effect. Thus,wrap_contentandgravityare meaningless together. - The view's width (or height) has to be less than the parent. Otherwise
layout_gravitywon't have any effect. Thus,match_parentandlayout_gravityare meaningless together. - The
layout_gravity=centerlooks the same aslayout_gravity=center_horizontalhere because they are in a vertical linear layout. You can't center vertically in this case, solayout_gravity=centeronly centers horizontally. - This answer only dealt with setting
gravityandlayout_gravityon the views within a layout. To see what happens when you set thegravityof the of the parent layout itself, check out the supplemental answer that I referred to above. (Summary:gravitydoesn't work well on aRelativeLayoutbut can be useful with aLinearLayout.)
So remember, layout_gravity arranges a view in its layout. Gravity arranges the content inside the view.
xml
Here is the xml for the above image for your reference:
<?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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
Related
- Difference between a View's Padding and Margin
- Match_parent vs wrap_content
- How to set both gravity and layout gravity of a LinearLayout programatically
add a comment |
The difference
android:layout_gravity is the Outside gravity of the View. Specifies the direction in which the View should touch its parent's border.
android:gravity is the Inside gravity of that View. Specifies in which direction its contents should align.
HTML/CSS Equivalents
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
Easy trick to help you remember
Take layout-gravity as "Lay-outside-gravity".
add a comment |
Short Answer: use android:gravity or setGravity() to control gravity of all child views of a container; use android:layout_gravity or setLayoutParams() to control gravity of an individual view in a container.
Long story: to control gravity in a linear layout container such as LinearLayout or RadioGroup, there are two approaches:
1) To control the gravity of ALL child views of a LinearLayout container (as you did in your book), use android:gravity (not android:layout_gravity) in layout XML file or setGravity() method in code.
2) To control the gravity of a child view in its container, use android:layout_gravity XML attribute. In code, one needs to get the LinearLayout.LayoutParams of the view and set its gravity. Here is a code example that set a button to bottom in a horizontally oriented container:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
For horizontal LinearLayout container, the horizontal gravity of its child view is left-aligned one after another and cannot be changed. Setting android:layout_gravity to center_horizontal has no effect. The default vertical gravity is center (or center_vertical) and can be changed to top or bottom. Actually the default layout_gravity value is -1 but Android put it center vertically.
To change the horizontal positions of child views in a horizontal linear container, one can use layout_weight, margin and padding of the child view.
Similarly, for vertical View Group container, the vertical gravity of its child view is top-aligned one below another and cannot be changed. The default horizontal gravity is center (or center_horizontal) and can be changed to left or right.
Actually, a child view such as a button also has android:gravity XML attribute and the setGravity() method to control its child views -- the text in it. The Button.setGravity(int) is linked to this developer.android.com entry.
add a comment |
From what I can gather layout_gravity is the gravity of that view inside its parent, and gravity is the gravity of the children inside that view.
I think this is right but the best way to find out is to play around.
add a comment |

Look at the image to be clear about gravity
add a comment |
Though the question is already answered I have some samples demonstrating the use of gravity, layout_gravity, and layout_weight.
You can find the examples at http://juanpickselov.com/LayoutExamples.zip
I created the files in Eclipse, removed the .svn subfolders and have included styles, strings, colors, etc. The layout files are the main point of the demos. Since I'm a Java and Android development Newbie, one may find the Java inefficient. The files can be copied into an Eclipse Project or I've also used them in Netbeans with the Android development plugin available for that IDE.
2
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
add a comment |
If a we want to set the gravity of content inside a view then we will use "android:gravity", and if we want to set the gravity of this view (as a whole) within its parent view then we will use "android:layout_gravity".
add a comment |
Just thought I'd add my own explanation here - coming from a background on iOS, this is how I've internalized the two in iOS terms: "Layout Gravity" affects your position in the superview. "Gravity" affects the position of your subviews within you. Said another way, Layout Gravity positions you yourself while gravity positions your children.
add a comment |
There is many difference in the gravity and layout-gravity. I am going to explain my experience about these 2 concepts(All information i got due to my observation and some websites).
Use Of Gravity and Layout-gravity in
FrameLayout.....
Note:-
Gravity is used inside the View Content as some User have answer and it is same for all
ViewGroup Layout.Layout-gravityis used with the parent View as some User have answer.Gravity and Layout-gravityis work more useful with theFrameLayoutchilds .We can't use Gravity and Layout-gravityin FrameLayout's Tag ....We can set Child View any where in the
FrameLayoutusinglayout-gravity.We can use every single value of gravity inside the FrameLayout (eg:-
center_vertical,center_horizontal,center,top, etc), but it is not possible with other ViewGroup Layouts .FrameLayoutfully working onLayout-gravity. Example:- If you work onFrameLayoutthen you don't need to change whole Layout for adding new View. You just add View as last in theFrameLayoutand give himLayout-gravitywith value.(This is adavantages of layout-gravity with FrameLayout).
have look on example ......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
Output:-

Use Of Gravity and Layout-gravity in LinearLayout .....
Gravity working same as above but here differnce is that we can use Gravity inside the LinearLayout View and RelativeLayout View which is not possible in FrameLayout View.
LinearLayout with orientation vertical ....
Note:- Here we can set only 3 values of layout_gravity that is (left | right | center (also called center_horizontal)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity nor nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
Output:-

LinearLayout with orientation horizontal ....
Note:- Here we can set also 3 values of layout_gravity that is (top | bottom | center (also called center_vertical)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom nLayout nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center nLayout nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left nLayout nGravity"/>
</LinearLayout>
output:-

Note:- We can't use layout_gravity in the RelativeLayout Views but we can use gravity to set RelativeLayout childs to same position....
1
If you settextColorwhite in allviewthen it would be very great. :D
– Pratik Butani AndroidDev
Feb 6 at 8:47
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
add a comment |
Something I saw on Sandip's blog that I almost missed, fixed my problem. He said layout_gravity DOES NOT WORK WITH LinearLayout.
If you're using a LinearLayout and the gravity settings are driving you nuts (like me), then switch to something else.
I actually switched to a RelativeLayout then used layout_alignParentLeft and layout_alignParentRight on the 2 contained TextViews to get them on one line to go far left and far right.
add a comment |
An easy trick to remember this is gravity applies to us inside earth. So, android:gravity is for inside the view.
Rememeber the out in layout_gravity which would help you to remember that android:layout_gravity would refer to outside the view
add a comment |
android:gravity is used to specify how to place the content of the object within the object itself. In another word, android:gravity is used to specify the gravity of the content of the view.
android:layout_gravity is an attribution the child can supply to its parent, to specify the gravity the view within its parents.
For more details you can visit
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
2
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
add a comment |
The basic difference between the two is that-
android:gravity is used for child elements of the view.
android:layout_gravity is used for this element with respect to parent view.
add a comment |
Gravity: Allow you move the content inside a container. (How sub-views will be placed).
Important: (MOVE along X-axis or Y-axis within available space).
Example: Let's say if you were to work with LinearLayout (Height: match_parent, Width: match_parent) as root level element, then you will have full frame space available; and the child views says 2 TextViews (Height: wrap_content, Width: wrap_content) inside the LinearLayout can be moved around along x/y axis using corresponding values for gravity on parent.
Layout_Gravity: Allow you to override the parent gravity behavior ONLY along x-axis.
Important: (MOVE[override] along X-axis within available space).
Example: If you keep in mind the previous example, we know gravity enabled us to move along x/y axis, i.e; the place TextViews inside LinearLayout. Let's just say LinearLayout specifies gravity: center; meaning every TextView needs to be center both vertically and horizontally. Now if we want one of the TextView to go left/right, we can override the specified gravity behavior using layout_gravity on the TextView.
Bonus: if you dig deeper, you will find out that text within the TextView act as sub-view; so if you apply the gravity on TextView, the text inside the TextView will move around. (the entire concept apply here too)
add a comment |
Gravity is used to set text alignment in views but layout_gravity is use to set views it self. Lets take an example if you want to align text written in editText then use gravity and you want align this editText or any button or any view then use layout_gravity, So its very simple.
add a comment |
gravity: is used for simple views like textview, edittext etc.
layout_gravity: is used for current view only gravity in context of it's relative parent view like linear Layout or FrameLayout to make view in center or any other gravity of its parent.
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
add a comment |
android:gravity
is used to adjust for content of the view relative to its specify position (allocated area). android:gravity="left" would not do anything if layout_width is equal to the "wrap_content"
android:layout_gravity
is used for view itself relative to the parent or layout file.
add a comment |
android:gravity -> Sets the gravity of the content of the View its used on.
android:layout_gravity -> Sets the gravity of it's Parent's view or Layout
add a comment |
gravity--Applies to its own view.
layout-gravity---Applies to view related to its parent.
add a comment |
protected by Community♦ May 18 '13 at 4:07
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
20 Answers
20
active
oldest
votes
20 Answers
20
active
oldest
votes
active
oldest
votes
active
oldest
votes
Their names should help you:
android:gravitysets the gravity of the contents (i.e. its subviews) of theViewit's used on.android:layout_gravitysets the gravity of theVieworLayoutrelative to its parent.
And an example is here.
77
Basically, everything withlayout_defines something that effects the elements outside.
– Triang3l
Jun 28 '13 at 10:26
23
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
13
So what happens if theandroid:gravityis set to left and its children'sandroid:layout_gravityis set to right? which side will the children align to?
– Thupten
Mar 28 '14 at 20:52
2
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
|
show 2 more comments
Their names should help you:
android:gravitysets the gravity of the contents (i.e. its subviews) of theViewit's used on.android:layout_gravitysets the gravity of theVieworLayoutrelative to its parent.
And an example is here.
77
Basically, everything withlayout_defines something that effects the elements outside.
– Triang3l
Jun 28 '13 at 10:26
23
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
13
So what happens if theandroid:gravityis set to left and its children'sandroid:layout_gravityis set to right? which side will the children align to?
– Thupten
Mar 28 '14 at 20:52
2
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
|
show 2 more comments
Their names should help you:
android:gravitysets the gravity of the contents (i.e. its subviews) of theViewit's used on.android:layout_gravitysets the gravity of theVieworLayoutrelative to its parent.
And an example is here.
Their names should help you:
android:gravitysets the gravity of the contents (i.e. its subviews) of theViewit's used on.android:layout_gravitysets the gravity of theVieworLayoutrelative to its parent.
And an example is here.
edited Feb 8 at 21:28
danronmoon
2,84042549
2,84042549
answered Aug 14 '10 at 9:31
SephySephy
38k27107122
38k27107122
77
Basically, everything withlayout_defines something that effects the elements outside.
– Triang3l
Jun 28 '13 at 10:26
23
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
13
So what happens if theandroid:gravityis set to left and its children'sandroid:layout_gravityis set to right? which side will the children align to?
– Thupten
Mar 28 '14 at 20:52
2
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
|
show 2 more comments
77
Basically, everything withlayout_defines something that effects the elements outside.
– Triang3l
Jun 28 '13 at 10:26
23
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
13
So what happens if theandroid:gravityis set to left and its children'sandroid:layout_gravityis set to right? which side will the children align to?
– Thupten
Mar 28 '14 at 20:52
2
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
77
77
Basically, everything with
layout_ defines something that effects the elements outside.– Triang3l
Jun 28 '13 at 10:26
Basically, everything with
layout_ defines something that effects the elements outside.– Triang3l
Jun 28 '13 at 10:26
23
23
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
See, I find this funny, because if I just go off the names, my intuition is the other way around. Every time, I think "layout_gravity" means "the gravity for how this ViewGroup lays out it's contents", and "gravity" is "where this View gravitates to".
– Ogre
Aug 9 '13 at 5:29
13
13
So what happens if the
android:gravity is set to left and its children's android:layout_gravity is set to right? which side will the children align to?– Thupten
Mar 28 '14 at 20:52
So what happens if the
android:gravity is set to left and its children's android:layout_gravity is set to right? which side will the children align to?– Thupten
Mar 28 '14 at 20:52
2
2
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
As @Suragch commented on his answer, layout_gravity only works in LinearLayout and FrameLayout. LinearLayout has constraints to it though.
– Marco Luglio
Jun 25 '15 at 5:49
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
@Thupten Very good question. I guess one will prevail (I guess the children's layout_gravity) and the other one is only the default for the prevailing one.
– Trilarion
Dec 28 '15 at 9:30
|
show 2 more comments
Inside - Outside
gravityarranges the content inside the view.layout_gravityarranges the view's position outside of itself.
Sometimes it helps to see a picture, too. The green and blue are TextViews and the other two background colors are LinearLayouts.

Notes
- The
layout_gravitydoes not work for views in aRelativeLayout. Use it for views in aLinearLayoutorFrameLayout. See my supplemental answer for more details. - The view's width (or height) has to be greater than its content. Otherwise
gravitywon't have any effect. Thus,wrap_contentandgravityare meaningless together. - The view's width (or height) has to be less than the parent. Otherwise
layout_gravitywon't have any effect. Thus,match_parentandlayout_gravityare meaningless together. - The
layout_gravity=centerlooks the same aslayout_gravity=center_horizontalhere because they are in a vertical linear layout. You can't center vertically in this case, solayout_gravity=centeronly centers horizontally. - This answer only dealt with setting
gravityandlayout_gravityon the views within a layout. To see what happens when you set thegravityof the of the parent layout itself, check out the supplemental answer that I referred to above. (Summary:gravitydoesn't work well on aRelativeLayoutbut can be useful with aLinearLayout.)
So remember, layout_gravity arranges a view in its layout. Gravity arranges the content inside the view.
xml
Here is the xml for the above image for your reference:
<?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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
Related
- Difference between a View's Padding and Margin
- Match_parent vs wrap_content
- How to set both gravity and layout gravity of a LinearLayout programatically
add a comment |
Inside - Outside
gravityarranges the content inside the view.layout_gravityarranges the view's position outside of itself.
Sometimes it helps to see a picture, too. The green and blue are TextViews and the other two background colors are LinearLayouts.

Notes
- The
layout_gravitydoes not work for views in aRelativeLayout. Use it for views in aLinearLayoutorFrameLayout. See my supplemental answer for more details. - The view's width (or height) has to be greater than its content. Otherwise
gravitywon't have any effect. Thus,wrap_contentandgravityare meaningless together. - The view's width (or height) has to be less than the parent. Otherwise
layout_gravitywon't have any effect. Thus,match_parentandlayout_gravityare meaningless together. - The
layout_gravity=centerlooks the same aslayout_gravity=center_horizontalhere because they are in a vertical linear layout. You can't center vertically in this case, solayout_gravity=centeronly centers horizontally. - This answer only dealt with setting
gravityandlayout_gravityon the views within a layout. To see what happens when you set thegravityof the of the parent layout itself, check out the supplemental answer that I referred to above. (Summary:gravitydoesn't work well on aRelativeLayoutbut can be useful with aLinearLayout.)
So remember, layout_gravity arranges a view in its layout. Gravity arranges the content inside the view.
xml
Here is the xml for the above image for your reference:
<?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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
Related
- Difference between a View's Padding and Margin
- Match_parent vs wrap_content
- How to set both gravity and layout gravity of a LinearLayout programatically
add a comment |
Inside - Outside
gravityarranges the content inside the view.layout_gravityarranges the view's position outside of itself.
Sometimes it helps to see a picture, too. The green and blue are TextViews and the other two background colors are LinearLayouts.

Notes
- The
layout_gravitydoes not work for views in aRelativeLayout. Use it for views in aLinearLayoutorFrameLayout. See my supplemental answer for more details. - The view's width (or height) has to be greater than its content. Otherwise
gravitywon't have any effect. Thus,wrap_contentandgravityare meaningless together. - The view's width (or height) has to be less than the parent. Otherwise
layout_gravitywon't have any effect. Thus,match_parentandlayout_gravityare meaningless together. - The
layout_gravity=centerlooks the same aslayout_gravity=center_horizontalhere because they are in a vertical linear layout. You can't center vertically in this case, solayout_gravity=centeronly centers horizontally. - This answer only dealt with setting
gravityandlayout_gravityon the views within a layout. To see what happens when you set thegravityof the of the parent layout itself, check out the supplemental answer that I referred to above. (Summary:gravitydoesn't work well on aRelativeLayoutbut can be useful with aLinearLayout.)
So remember, layout_gravity arranges a view in its layout. Gravity arranges the content inside the view.
xml
Here is the xml for the above image for your reference:
<?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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
Related
- Difference between a View's Padding and Margin
- Match_parent vs wrap_content
- How to set both gravity and layout gravity of a LinearLayout programatically
Inside - Outside
gravityarranges the content inside the view.layout_gravityarranges the view's position outside of itself.
Sometimes it helps to see a picture, too. The green and blue are TextViews and the other two background colors are LinearLayouts.

Notes
- The
layout_gravitydoes not work for views in aRelativeLayout. Use it for views in aLinearLayoutorFrameLayout. See my supplemental answer for more details. - The view's width (or height) has to be greater than its content. Otherwise
gravitywon't have any effect. Thus,wrap_contentandgravityare meaningless together. - The view's width (or height) has to be less than the parent. Otherwise
layout_gravitywon't have any effect. Thus,match_parentandlayout_gravityare meaningless together. - The
layout_gravity=centerlooks the same aslayout_gravity=center_horizontalhere because they are in a vertical linear layout. You can't center vertically in this case, solayout_gravity=centeronly centers horizontally. - This answer only dealt with setting
gravityandlayout_gravityon the views within a layout. To see what happens when you set thegravityof the of the parent layout itself, check out the supplemental answer that I referred to above. (Summary:gravitydoesn't work well on aRelativeLayoutbut can be useful with aLinearLayout.)
So remember, layout_gravity arranges a view in its layout. Gravity arranges the content inside the view.
xml
Here is the xml for the above image for your reference:
<?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"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
Related
- Difference between a View's Padding and Margin
- Match_parent vs wrap_content
- How to set both gravity and layout gravity of a LinearLayout programatically
edited May 23 '17 at 12:10
Community♦
11
11
answered Oct 4 '14 at 5:43
SuragchSuragch
211k125709773
211k125709773
add a comment |
add a comment |
The difference
android:layout_gravity is the Outside gravity of the View. Specifies the direction in which the View should touch its parent's border.
android:gravity is the Inside gravity of that View. Specifies in which direction its contents should align.
HTML/CSS Equivalents
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
Easy trick to help you remember
Take layout-gravity as "Lay-outside-gravity".
add a comment |
The difference
android:layout_gravity is the Outside gravity of the View. Specifies the direction in which the View should touch its parent's border.
android:gravity is the Inside gravity of that View. Specifies in which direction its contents should align.
HTML/CSS Equivalents
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
Easy trick to help you remember
Take layout-gravity as "Lay-outside-gravity".
add a comment |
The difference
android:layout_gravity is the Outside gravity of the View. Specifies the direction in which the View should touch its parent's border.
android:gravity is the Inside gravity of that View. Specifies in which direction its contents should align.
HTML/CSS Equivalents
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
Easy trick to help you remember
Take layout-gravity as "Lay-outside-gravity".
The difference
android:layout_gravity is the Outside gravity of the View. Specifies the direction in which the View should touch its parent's border.
android:gravity is the Inside gravity of that View. Specifies in which direction its contents should align.
HTML/CSS Equivalents
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
Easy trick to help you remember
Take layout-gravity as "Lay-outside-gravity".
edited Feb 5 '18 at 2:46
Cœur
19.1k9114155
19.1k9114155
answered Jul 25 '11 at 17:07
Vishnu HaridasVishnu Haridas
6,10621833
6,10621833
add a comment |
add a comment |
Short Answer: use android:gravity or setGravity() to control gravity of all child views of a container; use android:layout_gravity or setLayoutParams() to control gravity of an individual view in a container.
Long story: to control gravity in a linear layout container such as LinearLayout or RadioGroup, there are two approaches:
1) To control the gravity of ALL child views of a LinearLayout container (as you did in your book), use android:gravity (not android:layout_gravity) in layout XML file or setGravity() method in code.
2) To control the gravity of a child view in its container, use android:layout_gravity XML attribute. In code, one needs to get the LinearLayout.LayoutParams of the view and set its gravity. Here is a code example that set a button to bottom in a horizontally oriented container:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
For horizontal LinearLayout container, the horizontal gravity of its child view is left-aligned one after another and cannot be changed. Setting android:layout_gravity to center_horizontal has no effect. The default vertical gravity is center (or center_vertical) and can be changed to top or bottom. Actually the default layout_gravity value is -1 but Android put it center vertically.
To change the horizontal positions of child views in a horizontal linear container, one can use layout_weight, margin and padding of the child view.
Similarly, for vertical View Group container, the vertical gravity of its child view is top-aligned one below another and cannot be changed. The default horizontal gravity is center (or center_horizontal) and can be changed to left or right.
Actually, a child view such as a button also has android:gravity XML attribute and the setGravity() method to control its child views -- the text in it. The Button.setGravity(int) is linked to this developer.android.com entry.
add a comment |
Short Answer: use android:gravity or setGravity() to control gravity of all child views of a container; use android:layout_gravity or setLayoutParams() to control gravity of an individual view in a container.
Long story: to control gravity in a linear layout container such as LinearLayout or RadioGroup, there are two approaches:
1) To control the gravity of ALL child views of a LinearLayout container (as you did in your book), use android:gravity (not android:layout_gravity) in layout XML file or setGravity() method in code.
2) To control the gravity of a child view in its container, use android:layout_gravity XML attribute. In code, one needs to get the LinearLayout.LayoutParams of the view and set its gravity. Here is a code example that set a button to bottom in a horizontally oriented container:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
For horizontal LinearLayout container, the horizontal gravity of its child view is left-aligned one after another and cannot be changed. Setting android:layout_gravity to center_horizontal has no effect. The default vertical gravity is center (or center_vertical) and can be changed to top or bottom. Actually the default layout_gravity value is -1 but Android put it center vertically.
To change the horizontal positions of child views in a horizontal linear container, one can use layout_weight, margin and padding of the child view.
Similarly, for vertical View Group container, the vertical gravity of its child view is top-aligned one below another and cannot be changed. The default horizontal gravity is center (or center_horizontal) and can be changed to left or right.
Actually, a child view such as a button also has android:gravity XML attribute and the setGravity() method to control its child views -- the text in it. The Button.setGravity(int) is linked to this developer.android.com entry.
add a comment |
Short Answer: use android:gravity or setGravity() to control gravity of all child views of a container; use android:layout_gravity or setLayoutParams() to control gravity of an individual view in a container.
Long story: to control gravity in a linear layout container such as LinearLayout or RadioGroup, there are two approaches:
1) To control the gravity of ALL child views of a LinearLayout container (as you did in your book), use android:gravity (not android:layout_gravity) in layout XML file or setGravity() method in code.
2) To control the gravity of a child view in its container, use android:layout_gravity XML attribute. In code, one needs to get the LinearLayout.LayoutParams of the view and set its gravity. Here is a code example that set a button to bottom in a horizontally oriented container:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
For horizontal LinearLayout container, the horizontal gravity of its child view is left-aligned one after another and cannot be changed. Setting android:layout_gravity to center_horizontal has no effect. The default vertical gravity is center (or center_vertical) and can be changed to top or bottom. Actually the default layout_gravity value is -1 but Android put it center vertically.
To change the horizontal positions of child views in a horizontal linear container, one can use layout_weight, margin and padding of the child view.
Similarly, for vertical View Group container, the vertical gravity of its child view is top-aligned one below another and cannot be changed. The default horizontal gravity is center (or center_horizontal) and can be changed to left or right.
Actually, a child view such as a button also has android:gravity XML attribute and the setGravity() method to control its child views -- the text in it. The Button.setGravity(int) is linked to this developer.android.com entry.
Short Answer: use android:gravity or setGravity() to control gravity of all child views of a container; use android:layout_gravity or setLayoutParams() to control gravity of an individual view in a container.
Long story: to control gravity in a linear layout container such as LinearLayout or RadioGroup, there are two approaches:
1) To control the gravity of ALL child views of a LinearLayout container (as you did in your book), use android:gravity (not android:layout_gravity) in layout XML file or setGravity() method in code.
2) To control the gravity of a child view in its container, use android:layout_gravity XML attribute. In code, one needs to get the LinearLayout.LayoutParams of the view and set its gravity. Here is a code example that set a button to bottom in a horizontally oriented container:
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
For horizontal LinearLayout container, the horizontal gravity of its child view is left-aligned one after another and cannot be changed. Setting android:layout_gravity to center_horizontal has no effect. The default vertical gravity is center (or center_vertical) and can be changed to top or bottom. Actually the default layout_gravity value is -1 but Android put it center vertically.
To change the horizontal positions of child views in a horizontal linear container, one can use layout_weight, margin and padding of the child view.
Similarly, for vertical View Group container, the vertical gravity of its child view is top-aligned one below another and cannot be changed. The default horizontal gravity is center (or center_horizontal) and can be changed to left or right.
Actually, a child view such as a button also has android:gravity XML attribute and the setGravity() method to control its child views -- the text in it. The Button.setGravity(int) is linked to this developer.android.com entry.
edited Sep 9 '12 at 1:20
Mike Mackintosh
11.5k64675
11.5k64675
answered Jul 30 '11 at 20:01
YingYing
1,9271918
1,9271918
add a comment |
add a comment |
From what I can gather layout_gravity is the gravity of that view inside its parent, and gravity is the gravity of the children inside that view.
I think this is right but the best way to find out is to play around.
add a comment |
From what I can gather layout_gravity is the gravity of that view inside its parent, and gravity is the gravity of the children inside that view.
I think this is right but the best way to find out is to play around.
add a comment |
From what I can gather layout_gravity is the gravity of that view inside its parent, and gravity is the gravity of the children inside that view.
I think this is right but the best way to find out is to play around.
From what I can gather layout_gravity is the gravity of that view inside its parent, and gravity is the gravity of the children inside that view.
I think this is right but the best way to find out is to play around.
answered Aug 14 '10 at 9:37
matto1990matto1990
2,30821824
2,30821824
add a comment |
add a comment |

Look at the image to be clear about gravity
add a comment |

Look at the image to be clear about gravity
add a comment |

Look at the image to be clear about gravity

Look at the image to be clear about gravity
answered Feb 4 '15 at 7:17
Akshay PaliwalAkshay Paliwal
2,21912537
2,21912537
add a comment |
add a comment |
Though the question is already answered I have some samples demonstrating the use of gravity, layout_gravity, and layout_weight.
You can find the examples at http://juanpickselov.com/LayoutExamples.zip
I created the files in Eclipse, removed the .svn subfolders and have included styles, strings, colors, etc. The layout files are the main point of the demos. Since I'm a Java and Android development Newbie, one may find the Java inefficient. The files can be copied into an Eclipse Project or I've also used them in Netbeans with the Android development plugin available for that IDE.
2
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
add a comment |
Though the question is already answered I have some samples demonstrating the use of gravity, layout_gravity, and layout_weight.
You can find the examples at http://juanpickselov.com/LayoutExamples.zip
I created the files in Eclipse, removed the .svn subfolders and have included styles, strings, colors, etc. The layout files are the main point of the demos. Since I'm a Java and Android development Newbie, one may find the Java inefficient. The files can be copied into an Eclipse Project or I've also used them in Netbeans with the Android development plugin available for that IDE.
2
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
add a comment |
Though the question is already answered I have some samples demonstrating the use of gravity, layout_gravity, and layout_weight.
You can find the examples at http://juanpickselov.com/LayoutExamples.zip
I created the files in Eclipse, removed the .svn subfolders and have included styles, strings, colors, etc. The layout files are the main point of the demos. Since I'm a Java and Android development Newbie, one may find the Java inefficient. The files can be copied into an Eclipse Project or I've also used them in Netbeans with the Android development plugin available for that IDE.
Though the question is already answered I have some samples demonstrating the use of gravity, layout_gravity, and layout_weight.
You can find the examples at http://juanpickselov.com/LayoutExamples.zip
I created the files in Eclipse, removed the .svn subfolders and have included styles, strings, colors, etc. The layout files are the main point of the demos. Since I'm a Java and Android development Newbie, one may find the Java inefficient. The files can be copied into an Eclipse Project or I've also used them in Netbeans with the Android development plugin available for that IDE.
answered Nov 23 '10 at 5:43
user244298
2
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
add a comment |
2
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
2
2
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
Somehow, two and a half years later, the example link is resulting in a 404.
– Tony Adams
Jun 14 '13 at 18:57
add a comment |
If a we want to set the gravity of content inside a view then we will use "android:gravity", and if we want to set the gravity of this view (as a whole) within its parent view then we will use "android:layout_gravity".
add a comment |
If a we want to set the gravity of content inside a view then we will use "android:gravity", and if we want to set the gravity of this view (as a whole) within its parent view then we will use "android:layout_gravity".
add a comment |
If a we want to set the gravity of content inside a view then we will use "android:gravity", and if we want to set the gravity of this view (as a whole) within its parent view then we will use "android:layout_gravity".
If a we want to set the gravity of content inside a view then we will use "android:gravity", and if we want to set the gravity of this view (as a whole) within its parent view then we will use "android:layout_gravity".
edited Apr 28 '13 at 16:45
Artychoke
312
312
answered Apr 9 '13 at 21:21
Abhishek TamtaAbhishek Tamta
399414
399414
add a comment |
add a comment |
Just thought I'd add my own explanation here - coming from a background on iOS, this is how I've internalized the two in iOS terms: "Layout Gravity" affects your position in the superview. "Gravity" affects the position of your subviews within you. Said another way, Layout Gravity positions you yourself while gravity positions your children.
add a comment |
Just thought I'd add my own explanation here - coming from a background on iOS, this is how I've internalized the two in iOS terms: "Layout Gravity" affects your position in the superview. "Gravity" affects the position of your subviews within you. Said another way, Layout Gravity positions you yourself while gravity positions your children.
add a comment |
Just thought I'd add my own explanation here - coming from a background on iOS, this is how I've internalized the two in iOS terms: "Layout Gravity" affects your position in the superview. "Gravity" affects the position of your subviews within you. Said another way, Layout Gravity positions you yourself while gravity positions your children.
Just thought I'd add my own explanation here - coming from a background on iOS, this is how I've internalized the two in iOS terms: "Layout Gravity" affects your position in the superview. "Gravity" affects the position of your subviews within you. Said another way, Layout Gravity positions you yourself while gravity positions your children.
answered Apr 15 '15 at 20:56
mszaromszaro
1,07211025
1,07211025
add a comment |
add a comment |
There is many difference in the gravity and layout-gravity. I am going to explain my experience about these 2 concepts(All information i got due to my observation and some websites).
Use Of Gravity and Layout-gravity in
FrameLayout.....
Note:-
Gravity is used inside the View Content as some User have answer and it is same for all
ViewGroup Layout.Layout-gravityis used with the parent View as some User have answer.Gravity and Layout-gravityis work more useful with theFrameLayoutchilds .We can't use Gravity and Layout-gravityin FrameLayout's Tag ....We can set Child View any where in the
FrameLayoutusinglayout-gravity.We can use every single value of gravity inside the FrameLayout (eg:-
center_vertical,center_horizontal,center,top, etc), but it is not possible with other ViewGroup Layouts .FrameLayoutfully working onLayout-gravity. Example:- If you work onFrameLayoutthen you don't need to change whole Layout for adding new View. You just add View as last in theFrameLayoutand give himLayout-gravitywith value.(This is adavantages of layout-gravity with FrameLayout).
have look on example ......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
Output:-

Use Of Gravity and Layout-gravity in LinearLayout .....
Gravity working same as above but here differnce is that we can use Gravity inside the LinearLayout View and RelativeLayout View which is not possible in FrameLayout View.
LinearLayout with orientation vertical ....
Note:- Here we can set only 3 values of layout_gravity that is (left | right | center (also called center_horizontal)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity nor nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
Output:-

LinearLayout with orientation horizontal ....
Note:- Here we can set also 3 values of layout_gravity that is (top | bottom | center (also called center_vertical)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom nLayout nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center nLayout nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left nLayout nGravity"/>
</LinearLayout>
output:-

Note:- We can't use layout_gravity in the RelativeLayout Views but we can use gravity to set RelativeLayout childs to same position....
1
If you settextColorwhite in allviewthen it would be very great. :D
– Pratik Butani AndroidDev
Feb 6 at 8:47
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
add a comment |
There is many difference in the gravity and layout-gravity. I am going to explain my experience about these 2 concepts(All information i got due to my observation and some websites).
Use Of Gravity and Layout-gravity in
FrameLayout.....
Note:-
Gravity is used inside the View Content as some User have answer and it is same for all
ViewGroup Layout.Layout-gravityis used with the parent View as some User have answer.Gravity and Layout-gravityis work more useful with theFrameLayoutchilds .We can't use Gravity and Layout-gravityin FrameLayout's Tag ....We can set Child View any where in the
FrameLayoutusinglayout-gravity.We can use every single value of gravity inside the FrameLayout (eg:-
center_vertical,center_horizontal,center,top, etc), but it is not possible with other ViewGroup Layouts .FrameLayoutfully working onLayout-gravity. Example:- If you work onFrameLayoutthen you don't need to change whole Layout for adding new View. You just add View as last in theFrameLayoutand give himLayout-gravitywith value.(This is adavantages of layout-gravity with FrameLayout).
have look on example ......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
Output:-

Use Of Gravity and Layout-gravity in LinearLayout .....
Gravity working same as above but here differnce is that we can use Gravity inside the LinearLayout View and RelativeLayout View which is not possible in FrameLayout View.
LinearLayout with orientation vertical ....
Note:- Here we can set only 3 values of layout_gravity that is (left | right | center (also called center_horizontal)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity nor nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
Output:-

LinearLayout with orientation horizontal ....
Note:- Here we can set also 3 values of layout_gravity that is (top | bottom | center (also called center_vertical)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom nLayout nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center nLayout nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left nLayout nGravity"/>
</LinearLayout>
output:-

Note:- We can't use layout_gravity in the RelativeLayout Views but we can use gravity to set RelativeLayout childs to same position....
1
If you settextColorwhite in allviewthen it would be very great. :D
– Pratik Butani AndroidDev
Feb 6 at 8:47
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
add a comment |
There is many difference in the gravity and layout-gravity. I am going to explain my experience about these 2 concepts(All information i got due to my observation and some websites).
Use Of Gravity and Layout-gravity in
FrameLayout.....
Note:-
Gravity is used inside the View Content as some User have answer and it is same for all
ViewGroup Layout.Layout-gravityis used with the parent View as some User have answer.Gravity and Layout-gravityis work more useful with theFrameLayoutchilds .We can't use Gravity and Layout-gravityin FrameLayout's Tag ....We can set Child View any where in the
FrameLayoutusinglayout-gravity.We can use every single value of gravity inside the FrameLayout (eg:-
center_vertical,center_horizontal,center,top, etc), but it is not possible with other ViewGroup Layouts .FrameLayoutfully working onLayout-gravity. Example:- If you work onFrameLayoutthen you don't need to change whole Layout for adding new View. You just add View as last in theFrameLayoutand give himLayout-gravitywith value.(This is adavantages of layout-gravity with FrameLayout).
have look on example ......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
Output:-

Use Of Gravity and Layout-gravity in LinearLayout .....
Gravity working same as above but here differnce is that we can use Gravity inside the LinearLayout View and RelativeLayout View which is not possible in FrameLayout View.
LinearLayout with orientation vertical ....
Note:- Here we can set only 3 values of layout_gravity that is (left | right | center (also called center_horizontal)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity nor nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
Output:-

LinearLayout with orientation horizontal ....
Note:- Here we can set also 3 values of layout_gravity that is (top | bottom | center (also called center_vertical)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom nLayout nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center nLayout nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left nLayout nGravity"/>
</LinearLayout>
output:-

Note:- We can't use layout_gravity in the RelativeLayout Views but we can use gravity to set RelativeLayout childs to same position....
There is many difference in the gravity and layout-gravity. I am going to explain my experience about these 2 concepts(All information i got due to my observation and some websites).
Use Of Gravity and Layout-gravity in
FrameLayout.....
Note:-
Gravity is used inside the View Content as some User have answer and it is same for all
ViewGroup Layout.Layout-gravityis used with the parent View as some User have answer.Gravity and Layout-gravityis work more useful with theFrameLayoutchilds .We can't use Gravity and Layout-gravityin FrameLayout's Tag ....We can set Child View any where in the
FrameLayoutusinglayout-gravity.We can use every single value of gravity inside the FrameLayout (eg:-
center_vertical,center_horizontal,center,top, etc), but it is not possible with other ViewGroup Layouts .FrameLayoutfully working onLayout-gravity. Example:- If you work onFrameLayoutthen you don't need to change whole Layout for adding new View. You just add View as last in theFrameLayoutand give himLayout-gravitywith value.(This is adavantages of layout-gravity with FrameLayout).
have look on example ......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
Output:-

Use Of Gravity and Layout-gravity in LinearLayout .....
Gravity working same as above but here differnce is that we can use Gravity inside the LinearLayout View and RelativeLayout View which is not possible in FrameLayout View.
LinearLayout with orientation vertical ....
Note:- Here we can set only 3 values of layout_gravity that is (left | right | center (also called center_horizontal)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity nor nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
Output:-

LinearLayout with orientation horizontal ....
Note:- Here we can set also 3 values of layout_gravity that is (top | bottom | center (also called center_vertical)).
have look on example :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom nLayout nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center nLayout nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left nLayout nGravity"/>
</LinearLayout>
output:-

Note:- We can't use layout_gravity in the RelativeLayout Views but we can use gravity to set RelativeLayout childs to same position....
answered Oct 17 '16 at 6:48
Sushil KumarSushil Kumar
5,49431659
5,49431659
1
If you settextColorwhite in allviewthen it would be very great. :D
– Pratik Butani AndroidDev
Feb 6 at 8:47
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
add a comment |
1
If you settextColorwhite in allviewthen it would be very great. :D
– Pratik Butani AndroidDev
Feb 6 at 8:47
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
1
1
If you set
textColor white in all view then it would be very great. :D– Pratik Butani AndroidDev
Feb 6 at 8:47
If you set
textColor white in all view then it would be very great. :D– Pratik Butani AndroidDev
Feb 6 at 8:47
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
Are you sure? It will look black and white that's why i used different color for every View.
– Sushil Kumar
Feb 6 at 9:54
add a comment |
Something I saw on Sandip's blog that I almost missed, fixed my problem. He said layout_gravity DOES NOT WORK WITH LinearLayout.
If you're using a LinearLayout and the gravity settings are driving you nuts (like me), then switch to something else.
I actually switched to a RelativeLayout then used layout_alignParentLeft and layout_alignParentRight on the 2 contained TextViews to get them on one line to go far left and far right.
add a comment |
Something I saw on Sandip's blog that I almost missed, fixed my problem. He said layout_gravity DOES NOT WORK WITH LinearLayout.
If you're using a LinearLayout and the gravity settings are driving you nuts (like me), then switch to something else.
I actually switched to a RelativeLayout then used layout_alignParentLeft and layout_alignParentRight on the 2 contained TextViews to get them on one line to go far left and far right.
add a comment |
Something I saw on Sandip's blog that I almost missed, fixed my problem. He said layout_gravity DOES NOT WORK WITH LinearLayout.
If you're using a LinearLayout and the gravity settings are driving you nuts (like me), then switch to something else.
I actually switched to a RelativeLayout then used layout_alignParentLeft and layout_alignParentRight on the 2 contained TextViews to get them on one line to go far left and far right.
Something I saw on Sandip's blog that I almost missed, fixed my problem. He said layout_gravity DOES NOT WORK WITH LinearLayout.
If you're using a LinearLayout and the gravity settings are driving you nuts (like me), then switch to something else.
I actually switched to a RelativeLayout then used layout_alignParentLeft and layout_alignParentRight on the 2 contained TextViews to get them on one line to go far left and far right.
edited Apr 20 '15 at 15:51
Catalina
9781023
9781023
answered Jul 24 '14 at 19:34
JustSomeGuyJustSomeGuy
11815
11815
add a comment |
add a comment |
An easy trick to remember this is gravity applies to us inside earth. So, android:gravity is for inside the view.
Rememeber the out in layout_gravity which would help you to remember that android:layout_gravity would refer to outside the view
add a comment |
An easy trick to remember this is gravity applies to us inside earth. So, android:gravity is for inside the view.
Rememeber the out in layout_gravity which would help you to remember that android:layout_gravity would refer to outside the view
add a comment |
An easy trick to remember this is gravity applies to us inside earth. So, android:gravity is for inside the view.
Rememeber the out in layout_gravity which would help you to remember that android:layout_gravity would refer to outside the view
An easy trick to remember this is gravity applies to us inside earth. So, android:gravity is for inside the view.
Rememeber the out in layout_gravity which would help you to remember that android:layout_gravity would refer to outside the view
edited Sep 24 '18 at 11:53
answered Nov 29 '16 at 8:41
Mahendra LiyaMahendra Liya
7,7591067101
7,7591067101
add a comment |
add a comment |
android:gravity is used to specify how to place the content of the object within the object itself. In another word, android:gravity is used to specify the gravity of the content of the view.
android:layout_gravity is an attribution the child can supply to its parent, to specify the gravity the view within its parents.
For more details you can visit
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
2
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
add a comment |
android:gravity is used to specify how to place the content of the object within the object itself. In another word, android:gravity is used to specify the gravity of the content of the view.
android:layout_gravity is an attribution the child can supply to its parent, to specify the gravity the view within its parents.
For more details you can visit
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
2
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
add a comment |
android:gravity is used to specify how to place the content of the object within the object itself. In another word, android:gravity is used to specify the gravity of the content of the view.
android:layout_gravity is an attribution the child can supply to its parent, to specify the gravity the view within its parents.
For more details you can visit
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
android:gravity is used to specify how to place the content of the object within the object itself. In another word, android:gravity is used to specify the gravity of the content of the view.
android:layout_gravity is an attribution the child can supply to its parent, to specify the gravity the view within its parents.
For more details you can visit
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
answered May 10 '15 at 12:17
IntelliJ AmiyaIntelliJ Amiya
53.8k12115138
53.8k12115138
2
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
add a comment |
2
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
2
2
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
I think no need of new answer as there are multiple answers already posted and with almost the same contents covered!
– Paresh Mayani
May 10 '15 at 13:56
add a comment |
The basic difference between the two is that-
android:gravity is used for child elements of the view.
android:layout_gravity is used for this element with respect to parent view.
add a comment |
The basic difference between the two is that-
android:gravity is used for child elements of the view.
android:layout_gravity is used for this element with respect to parent view.
add a comment |
The basic difference between the two is that-
android:gravity is used for child elements of the view.
android:layout_gravity is used for this element with respect to parent view.
The basic difference between the two is that-
android:gravity is used for child elements of the view.
android:layout_gravity is used for this element with respect to parent view.
edited Sep 15 '16 at 15:23
answered Jul 26 '16 at 14:43
Abhishek TandonAbhishek Tandon
722826
722826
add a comment |
add a comment |
Gravity: Allow you move the content inside a container. (How sub-views will be placed).
Important: (MOVE along X-axis or Y-axis within available space).
Example: Let's say if you were to work with LinearLayout (Height: match_parent, Width: match_parent) as root level element, then you will have full frame space available; and the child views says 2 TextViews (Height: wrap_content, Width: wrap_content) inside the LinearLayout can be moved around along x/y axis using corresponding values for gravity on parent.
Layout_Gravity: Allow you to override the parent gravity behavior ONLY along x-axis.
Important: (MOVE[override] along X-axis within available space).
Example: If you keep in mind the previous example, we know gravity enabled us to move along x/y axis, i.e; the place TextViews inside LinearLayout. Let's just say LinearLayout specifies gravity: center; meaning every TextView needs to be center both vertically and horizontally. Now if we want one of the TextView to go left/right, we can override the specified gravity behavior using layout_gravity on the TextView.
Bonus: if you dig deeper, you will find out that text within the TextView act as sub-view; so if you apply the gravity on TextView, the text inside the TextView will move around. (the entire concept apply here too)
add a comment |
Gravity: Allow you move the content inside a container. (How sub-views will be placed).
Important: (MOVE along X-axis or Y-axis within available space).
Example: Let's say if you were to work with LinearLayout (Height: match_parent, Width: match_parent) as root level element, then you will have full frame space available; and the child views says 2 TextViews (Height: wrap_content, Width: wrap_content) inside the LinearLayout can be moved around along x/y axis using corresponding values for gravity on parent.
Layout_Gravity: Allow you to override the parent gravity behavior ONLY along x-axis.
Important: (MOVE[override] along X-axis within available space).
Example: If you keep in mind the previous example, we know gravity enabled us to move along x/y axis, i.e; the place TextViews inside LinearLayout. Let's just say LinearLayout specifies gravity: center; meaning every TextView needs to be center both vertically and horizontally. Now if we want one of the TextView to go left/right, we can override the specified gravity behavior using layout_gravity on the TextView.
Bonus: if you dig deeper, you will find out that text within the TextView act as sub-view; so if you apply the gravity on TextView, the text inside the TextView will move around. (the entire concept apply here too)
add a comment |
Gravity: Allow you move the content inside a container. (How sub-views will be placed).
Important: (MOVE along X-axis or Y-axis within available space).
Example: Let's say if you were to work with LinearLayout (Height: match_parent, Width: match_parent) as root level element, then you will have full frame space available; and the child views says 2 TextViews (Height: wrap_content, Width: wrap_content) inside the LinearLayout can be moved around along x/y axis using corresponding values for gravity on parent.
Layout_Gravity: Allow you to override the parent gravity behavior ONLY along x-axis.
Important: (MOVE[override] along X-axis within available space).
Example: If you keep in mind the previous example, we know gravity enabled us to move along x/y axis, i.e; the place TextViews inside LinearLayout. Let's just say LinearLayout specifies gravity: center; meaning every TextView needs to be center both vertically and horizontally. Now if we want one of the TextView to go left/right, we can override the specified gravity behavior using layout_gravity on the TextView.
Bonus: if you dig deeper, you will find out that text within the TextView act as sub-view; so if you apply the gravity on TextView, the text inside the TextView will move around. (the entire concept apply here too)
Gravity: Allow you move the content inside a container. (How sub-views will be placed).
Important: (MOVE along X-axis or Y-axis within available space).
Example: Let's say if you were to work with LinearLayout (Height: match_parent, Width: match_parent) as root level element, then you will have full frame space available; and the child views says 2 TextViews (Height: wrap_content, Width: wrap_content) inside the LinearLayout can be moved around along x/y axis using corresponding values for gravity on parent.
Layout_Gravity: Allow you to override the parent gravity behavior ONLY along x-axis.
Important: (MOVE[override] along X-axis within available space).
Example: If you keep in mind the previous example, we know gravity enabled us to move along x/y axis, i.e; the place TextViews inside LinearLayout. Let's just say LinearLayout specifies gravity: center; meaning every TextView needs to be center both vertically and horizontally. Now if we want one of the TextView to go left/right, we can override the specified gravity behavior using layout_gravity on the TextView.
Bonus: if you dig deeper, you will find out that text within the TextView act as sub-view; so if you apply the gravity on TextView, the text inside the TextView will move around. (the entire concept apply here too)
answered Apr 30 '18 at 10:36
Ali RazaAli Raza
3113
3113
add a comment |
add a comment |
Gravity is used to set text alignment in views but layout_gravity is use to set views it self. Lets take an example if you want to align text written in editText then use gravity and you want align this editText or any button or any view then use layout_gravity, So its very simple.
add a comment |
Gravity is used to set text alignment in views but layout_gravity is use to set views it self. Lets take an example if you want to align text written in editText then use gravity and you want align this editText or any button or any view then use layout_gravity, So its very simple.
add a comment |
Gravity is used to set text alignment in views but layout_gravity is use to set views it self. Lets take an example if you want to align text written in editText then use gravity and you want align this editText or any button or any view then use layout_gravity, So its very simple.
Gravity is used to set text alignment in views but layout_gravity is use to set views it self. Lets take an example if you want to align text written in editText then use gravity and you want align this editText or any button or any view then use layout_gravity, So its very simple.
answered May 17 '17 at 18:15
Praveen GaurPraveen Gaur
17615
17615
add a comment |
add a comment |
gravity: is used for simple views like textview, edittext etc.
layout_gravity: is used for current view only gravity in context of it's relative parent view like linear Layout or FrameLayout to make view in center or any other gravity of its parent.
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
add a comment |
gravity: is used for simple views like textview, edittext etc.
layout_gravity: is used for current view only gravity in context of it's relative parent view like linear Layout or FrameLayout to make view in center or any other gravity of its parent.
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
add a comment |
gravity: is used for simple views like textview, edittext etc.
layout_gravity: is used for current view only gravity in context of it's relative parent view like linear Layout or FrameLayout to make view in center or any other gravity of its parent.
gravity: is used for simple views like textview, edittext etc.
layout_gravity: is used for current view only gravity in context of it's relative parent view like linear Layout or FrameLayout to make view in center or any other gravity of its parent.
edited Feb 7 '18 at 12:27
Chintak Patel
494420
494420
answered Jun 1 '17 at 11:32
Mayank GargMayank Garg
605417
605417
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
add a comment |
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
layout_gravity: is used for current view only gravity in context of it's relative parent, not other views which is inside of it's parent.
– Chintak Patel
Feb 7 '18 at 10:12
add a comment |
android:gravity
is used to adjust for content of the view relative to its specify position (allocated area). android:gravity="left" would not do anything if layout_width is equal to the "wrap_content"
android:layout_gravity
is used for view itself relative to the parent or layout file.
add a comment |
android:gravity
is used to adjust for content of the view relative to its specify position (allocated area). android:gravity="left" would not do anything if layout_width is equal to the "wrap_content"
android:layout_gravity
is used for view itself relative to the parent or layout file.
add a comment |
android:gravity
is used to adjust for content of the view relative to its specify position (allocated area). android:gravity="left" would not do anything if layout_width is equal to the "wrap_content"
android:layout_gravity
is used for view itself relative to the parent or layout file.
android:gravity
is used to adjust for content of the view relative to its specify position (allocated area). android:gravity="left" would not do anything if layout_width is equal to the "wrap_content"
android:layout_gravity
is used for view itself relative to the parent or layout file.
answered Jan 2 '17 at 12:13
TulsiTulsi
407413
407413
add a comment |
add a comment |
android:gravity -> Sets the gravity of the content of the View its used on.
android:layout_gravity -> Sets the gravity of it's Parent's view or Layout
add a comment |
android:gravity -> Sets the gravity of the content of the View its used on.
android:layout_gravity -> Sets the gravity of it's Parent's view or Layout
add a comment |
android:gravity -> Sets the gravity of the content of the View its used on.
android:layout_gravity -> Sets the gravity of it's Parent's view or Layout
android:gravity -> Sets the gravity of the content of the View its used on.
android:layout_gravity -> Sets the gravity of it's Parent's view or Layout
answered Jul 12 '17 at 17:10
VamsiVamsi
5721522
5721522
add a comment |
add a comment |
gravity--Applies to its own view.
layout-gravity---Applies to view related to its parent.
add a comment |
gravity--Applies to its own view.
layout-gravity---Applies to view related to its parent.
add a comment |
gravity--Applies to its own view.
layout-gravity---Applies to view related to its parent.
gravity--Applies to its own view.
layout-gravity---Applies to view related to its parent.
answered Nov 13 '18 at 10:07
nidhinidhi
248115
248115
add a comment |
add a comment |
protected by Community♦ May 18 '13 at 4:07
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
246
Easy trick to remember: Take "layout-gravity" as "Lay-outside-gravity"
– Vishnu Haridas
Dec 30 '11 at 9:22
6
center == center_vertical | center_horizontal
– Yousha Aleayoub
Sep 16 '16 at 14:33
3
These videos helped me a lot to understand the difference: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
– Roni Castro
Oct 21 '16 at 5:16
ImageView's seem to behave different thanTextView's.– samis
Aug 16 '17 at 16:42