上下文:我有一个小部件,它基本上由一个包含一堆TextView的RelativeLayout组成。这就是我希望窗口小部件在视觉上看起来像,然后是XML布局代码:
<?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>
问题:在以下情况下,我对layout_marginLeft的不一致行为感到困惑:
为什么我看到这种不一致的行为? layout_marginLeft使用什么作为它的“起源”?
答案 0 :(得分:1)
由于您使用的是垂直LinearLayout(orientation = vertical),因此android:layout_marginLeft将屏幕的最左侧作为原点,因此需要大的倾角值〜15。但是,如果您一直使用orientation = horizontal,则原点将是am_pm之前元素的结尾,因此您需要较小的dip值~2。 类似于相对和表格布局的情况。因为在使用RelativeLayout时,你提到了android:layout_toRightOf =“@ id / alarm_time”,原点将是alarm_time的结束,因此需要更小的下降值。