Tuesday, 29 March 2016

android - What is exact difference between gravity and layout_gravity










I have been working on android xml's. I have used android:layout_gravity="center" to align components in specific position.




Now a days, when I was working on a Dialog like Activity, I came across android:gravity="center". What I found there was, gravity was used to align its child to a specific position.



I would share an example of what it is,



android:gravity="center"



    android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"

android:orientation="vertical" >
android:id="@+id/enterNumberEdit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter No." >







It aligns the child of LinearLayout in center.



android:layout_gravity="center"



    android:layout_width="match_parent"
android:layout_height="match_parent"

android:layout_gravity="center"
android:orientation="vertical"
android:background="@drawable/dialog_background" >



It aligns the LinearLayout itself in center.



Now my questions are:





  1. If I am right in these assumptions, that whether gravity is for child components and layout_gravity is for parent component.

  2. When to choose gravity over layout_gravity.



I have found this much explanation working on xml's so far. I would like to hear much better explanation of it. Let me know, if I am wrong somewhere


Answer




  1. Yes, your understanding is correct. Any layout_ attribute gives instructions to the parent view.

  2. Generally, if a view is taking up the full width/height of its' parent, then you won't need to specify layout_gravity, you'll probably find gravity more useful. If your view does not take up an entire dimension of its' parent, you might want to align it depending on your desired look.



No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...