Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RelativeLayout:layout_marginLeft不一致行为_Android_Android Layout - Fatal编程技术网

Android RelativeLayout:layout_marginLeft不一致行为

Android RelativeLayout:layout_marginLeft不一致行为,android,android-layout,Android,Android Layout,上下文:我有一个小部件,它基本上由一个包装了一堆文本视图的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" andr

上下文:我有一个小部件,它基本上由一个包装了一堆文本视图的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>


问题:在以下场景中,我被版面边缘的不一致行为难住了:

  • 当这些小部件垂直堆叠在线性布局中时,右上角的AM/PM文本要求android:layout_marginLeft=“15dp”与上图中的一样
  • 但是,当小部件堆叠在2x2表格布局中时,AM/PM文本要求android:layout_marginLeft=“2dp”看起来正确

  • 为什么我会看到这种不一致的行为?layout_marginLeft使用什么作为“原点”?

    由于您使用的是垂直线性布局(方向=垂直),android:layout_marginLeft将以屏幕最左侧作为原点,因此需要较大的倾斜值~15。但是,如果您使用的是方向=水平,则原点将是am_pm之前元素的端点,因此需要较小的倾角值~2。
    相对nd表格布局的情况也类似。因为在使用RelativeLayout时,您提到了android:layout\u toRightOf=“@id/alarm\u time”,原点将是alarm\u时间的终点,因此需要较小的倾角值。

    因为您使用的是垂直线性布局(方向=垂直),android:layout\u marginLeft将以屏幕最左侧为原点,因此需要较大的倾角值~15。但是,如果您使用的是方向=水平,则原点将是am_pm之前元素的端点,因此需要较小的倾角值~2。
    相对nd表格布局的情况也类似。因为在使用RelativeLayout时,您提到了android:layout_toRightOf=“@id/alarm_time”,原点将是alarm_time的终点,因此需要较小的dip值。

    感谢@SaurabhVerma的回复。我不确定我是否正确理解了这一点。您是说layout_marginLeft使用的原点会根据RelativeLayout的堆叠方式发生变化吗?如果RelativeLayout以垂直直线布局堆叠,则原点位于屏幕的最左侧。但是,如果它堆叠在2x2表格布局中,则原点为@id/alarm\u time(因为layout\u toRightOf属性)。这是非常令人困惑的!这种行为有没有记录在案?谢谢你的回复@SaurabhVerma。我不确定我是否正确理解了这一点。您是说layout_marginLeft使用的原点会根据RelativeLayout的堆叠方式发生变化吗?如果RelativeLayout以垂直直线布局堆叠,则原点位于屏幕的最左侧。但是,如果它堆叠在2x2表格布局中,则原点为@id/alarm\u time(因为layout\u toRightOf属性)。这是非常令人困惑的!这种行为是否有记录在案?