Reputation: 6793
Context: I have a widget which basically consists of a RelativeLayout wrapping a bunch of TextViews. Here's what I want the widget to visually look like, followed by the the XML Layout code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/alarm_widget_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/alarm_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="8:30"
android:textSize="40sp"
/>
<TextView
android:id="@+id/alarm_am_pm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/alarm_time"
android:layout_marginLeft="2dp"
android:layout_alignTop="@id/alarm_time"
android:textSize="18sp"
android:text="AM"
/>
<TextView
android:id="@+id/alarm_days"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/alarm_time"
android:textSize="16sp"
android:text="M T W T F S S"
/>
<TextView
android:id="@+id/toggle_indicator"
android:layout_height="8sp"
android:layout_width="80sp"
android:layout_below="@id/alarm_days"
android:layout_centerHorizontal="true"
android:background="@drawable/toggle_button_oval"
/>
</RelativeLayout>
Question: I'm stumped with the inconsistent behaviour of layout_marginLeft in the following scenarios:
Why am I seeing this inconsistent behaviour? What does layout_marginLeft use as it's "origin"?
Upvotes: 1
Views: 753
Reputation: 6728
Since you are using a vertical LinearLayout (orientation = vertical), android:layout_marginLeft will take the extreme left of the screen as origin, thereby requiring a large dip value ~15. However, if you would have been using orientation = horizontal, the origin would be the end of the element just before your am_pm, and hence you would require a smaller dip value ~2. Similar is the case with Relative nd Tabular Layout. Since while using RelativeLayout, you have mentioned android:layout_toRightOf="@id/alarm_time", the origin will be the end of alarm_time, thereby requiring a smaller dip value.
Upvotes: 1