Every single [ViewGroup](<https://developer.android.com/reference/android/view/ViewGroup.html>) (e.g. [LinearLayout](<https://developer.android.com/reference/android/widget/LinearLayout.html>), [RelativeLayout](<https://developer.android.com/reference/android/widget/RelativeLayout.html>), [CoordinatorLayout](<https://developer.android.com/reference/android/support/design/widget/CoordinatorLayout.html>), etc.) needs to store information about its children’s properties. About the way its children are being laid out in the ViewGroup. This information is stored in objects of a wrapper class ViewGroup.LayoutParams.

To include parameters specific to a particular layout type, ViewGroups use subclasses of ViewGroup.LayoutParams class.

E.g. for

Most of ViewGroups reutilize the ability to set margins for their children, so they do not subclass ViewGroup.LayoutParams directly, but they subclass [ViewGroup.MarginLayoutParams](<https://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html>) instead (which itself is a subclass of ViewGroup.LayoutParams).


LayoutParams in xml

LayoutParams objects are created based on the inflated layout xml file.

<LinearLayout xmlns:android="<http://schemas.android.com/apk/res/android>"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_gravity="right"
        android:gravity="bottom"
        android:text="Example text"
        android:textColor="@android:color/holo_green_dark"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@android:color/holo_green_dark"
        android:scaleType="centerInside"
        android:src="@drawable/example"/>

</LinearLayout>

All parameters that begin with layout_ specify how the enclosing layout should work. When the layout is inflated, those parameters are wrapped in a proper LayoutParams object, that later will be used by the Layout to properly position a particular View within the ViewGroup. Other attributes of a View are directly View-related and are processed by the View itself.

For TextView:

For ImageView: