RelativeLayout和margin?

时间:2016-11-15 15:26:52

标签: android android-layout

我在View添加了RelativeLayout,并设置了300dp边距 然后我添加了另一个视图,但第二个视图不受第一个视图边缘的影响。为什么?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginLeft="300dp"
        android:background="@color/colorPrimaryDark"
        android:text="use margin left view 1"
        android:textSize="40sp" />

    <TextView
        android:layout_width="290dp"
        android:layout_height="200dp"
        android:background="@color/colorPrimaryDark"
        android:text="not affected by margin view 2 "
        android:textSize="40sp" />
</RelativeLayout>

结果:

enter image description here

4 个答案:

答案 0 :(得分:0)

这是因为您已将它们放在RelativeLayout中,您需要将子视图相对于彼此锚定。

因此,在这种情况下,您必须将属性android:layout_toRightOf=´="@+id/text"添加到第二个TextView

整个布局如下所示:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:text="Some text"
        android:layout_marginLeft="300dp"
        android:textSize="40sp"
        android:background="@color/colorPrimaryDark"/>

    <TextView
        android:id="@+id/text2"
        android:layout_toRightOf=="@+id/text1"
        android:layout_width="290dp"
        android:layout_height="200dp"
        android:text="Some other text"
        android:textSize="40sp"
        android:background="@color/colorPrimaryDark"/>

</RelativeLayout>

您可以在此处详细了解RelativeLayout https://developer.android.com/guide/topics/ui/layout/relative.html

答案 1 :(得分:0)

这是因为您只将TextView应用于第一个marginLeft,而不是两者都适用。如果您要将TextViews同时应用于LinearLayout,则可以使用LinearLayout将其marginLeft包围,然后将TextViews marginLeft设为300dp或您可以同时为TextViews LinearLayout提供300dp

以下是将<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> //Other stuff here <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="300dp"> <TextView android:layout_width="200dp" android:layout_height="200dp" android:text="use margin left view 1" android:id="@+id/text" android:textSize="40sp" android:background="@color/colorPrimaryDark"/> <TextView android:layout_width="290dp" android:layout_height="200dp" android:text="not affected by margin view 2 " android:textSize="40sp" android:background="@color/colorPrimaryDark"/> </LinearLayout> //Other stuff here </RelativeLayout> 包裹在RelativeLayout中的代码:

alignLeft

您也可以使用<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/text" android:layout_width="200dp" android:layout_height="200dp" android:layout_marginLeft="300dp" android:text="use margin left view 1" android:textSize="40sp" android:background="@color/colorPrimaryDark"/> <TextView android:layout_width="290dp" android:layout_height="200dp" android:layout_alignLeft="@id/text" android:text="not affected by margin view 2 " android:textSize="40sp" android:background="@color/colorPrimaryDark"/> </RelativeLayout> 的属性来获得相同的结果,例如RelativeLayout

以下是代码:

1 to 30000.toStream.combinations(2).size 

可以在此处找到要试用的其他r = list(range(1,30000)) z = itertools.combinations(r, 2) %time sum(1 for _ in z) 属性:https://developer.android.com/reference/android/widget/RelativeLayout.html

以下是一些正在使用的示例: https://developer.android.com/guide/topics/ui/layout/relative.html

答案 2 :(得分:0)

RelativeLayout是容器。它不会自动将布局参数从一个子项传递到另一个子项。

要使RelativeLayout中的所有子项具有相同的左边距,我建议将边距添加到RelativeLayout本身而不是TextView

所以你的代码是:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_marginLeft="300dp"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text1"
        android:layout_width="200dp"
        android:layout_height="200p"
        android:text="text 1"
        android:background="@color/colorPrimaryDark"/>

    <TextView
        android:layout_width="290dp"
        android:layout_height="200dp"
        android:text="text 2"
        android:background="@color/colorPrimaryDark"/>

</RelativeLayout>

答案 3 :(得分:0)

在这种情况下最好使用LinearLayout。别忘了提及方向:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:id="@+id/text"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_marginLeft="300dp"
    android:background="@color/colorPrimaryDark"
    android:text="use margin left view 1"
    android:textSize="40sp" />

<TextView
    android:layout_width="290dp"
    android:layout_height="200dp"
    android:background="@color/colorPrimaryDark"
    android:text="affected by margin view 2 "
    android:textSize="40sp" />

</LinearLayout>