The big difference between them is only perceived in devices using some language that requires reading RTL (Right to Left) and not LTR (Left to Right) as we are used.
It is possible to force this view using developer settings, but it is not very common to use this.
RTL support only appeared completely on Android 4.2, but already had a basic support on Android 4.1, this post can help understand.
Returning to the question, the marginStart
and marginEnd
, as well as the paddingStart
and paddingEnd
will generate the same result if the device is in LTR as its fixed attributes: marginLeft
, marginRight
, paddingLeft
and paddingRight
respectively, but if the device is in RTL will be exactly the opposite.
When you use marginLeft
, is applying the left (fixed) margin of the element in the LTR view. Using marginStart
, this margin applies to the (relative) start. In the case of the LTR view it is the left of the element, but in the case of the RLT it is the right of the element.
My suggestion is to always use the relative attributes in your case minSdkVersion
is greater than 17 (Android 4.2). If your minSdkVersion
is less than 17, always use both together with the same values. e. g: marginLeft
and marginStart
.