Understanding the difference between gravity and layout_gravity

Understanding the difference between gravity and layout_gravity

Gravity is essentially alignment. For example, if you want to align a label’s text to the right, you would set its gravity to right. There are quite a few possible values for gravity, including left, center, right, top, bottom, center_vertical, clip_horizontal, and others.

Note that Android defines two similar gravity attributes: android:gravity and android:layout_gravity. Here’s the difference: android:gravity is a setting used by the View, whereas android:layout_gravity is used by the container (ViewGroup).

For example, you can set android:gravity to center to have the text in the EditText centered within the control. Similarly, you can align an EditText to the far right of a LinearLayout (the container) by setting android:layout_gravity="right".

        android:text="Hello world!"

The difference between gravity and layout_gravity is subtle, but will be easy to understand after you try them out. gravity controls what happens inside a widget: you would use it, for example, to left-justify or center text within the widget. layout_gravity deals with the relationship between the widget and its parent. For instance, if our TextView had its width set to wrap_content , we could specify layout_gravity="center_horizontal" to center it horizontally within its parent LinearLayout.

If you’ve worked with web pages, you can consider gravity to be like padding in CSS, whereas layout_gravity is like margins.

comments powered by Disqus