layout_alignParentRight不适用于线性布局内的相对布局

时间:2015-05-25 14:51:38

标签: android xml android-layout

我在线性布局中有两个相对布局。我希望第一个相对布局左对齐,第二个相对布局右对齐。我在第二个相对布局中设置了以下行,但它不起作用。

android:layout_alignParentRight="true"

我的完整xml文件就在这里。

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="100">

    <RelativeLayout
        android:id="@+id/left"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="45"
        android:background="@drawable/listview">
        <ImageView
            android:id="@+id/leftPanelImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/sports"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="left panel"
            android:layout_marginTop="5dp"
            android:layout_below="@id/leftPanelImage"/>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="45"
        android:background="@drawable/listview"
        android:layout_alignParentRight="true"
        >
        <ImageView
            android:id="@+id/rightPanelImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:src="@drawable/sports"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="right panel"
            android:layout_marginTop="5dp"
            android:layout_below="@id/rightPanelImage"/>
    </RelativeLayout>



</LinearLayout>
</ScrollView>

我当前的代码给出了这样的输出。第一次布局后开始第二次布局。我希望它从父母的右边开始。

enter image description here

所以我的问题是如何设置第二个相对布局右对齐。

谢谢。

4 个答案:

答案 0 :(得分:2)

android:layout_alignParentRight适用于相对布局中的子项。由于您的相对布局是线性布局的子项,请尝试使用

android:layout_gravity="left"

android:layout_gravity="right"

答案 1 :(得分:1)

您的布局似乎非常矫枉过正,使用LinearLayout权重和RelativeLayout这样的简单布局并不是必需的。这两种方法都需要更慢的双重测量。我建议总是使用尽可能少的元素 - 为你的布局尝试像

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ...
    android:weightSum="100">

    <TextView
        android:layout_width="0dp"
        android:layout_weight="45"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/sports"
        android:drawablePadding="5dp"
        android:text="left panel"/>

    <View
        android:layout_width="0dp"
        android:layout_weight="10"
        android:layout_height="match_parent"/>

    <TextView
        android:layout_width="0dp"
        android:layout_weight="45"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/listview"
        android:drawablePadding="5dp"
        android:text="right panel"/>

</LinearLayout>

答案 2 :(得分:0)

android:layout_alignParentRightandroid:layout_alignParentLeft用于在相对布局内右对齐或左对齐。当然,它不适用于LinearLayout作为父级。您可以将父布局更改为RelativeLayout。

答案 3 :(得分:0)

android:layout_alignParentRight 属性适用于相对布局的子项。您正在使用线性布局的子项。

您可以将其设置为RelativeLayout的子项或在父视图上使用android:gravity =&#34; right&#34;。

<RelativeLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="45"
        android:background="@drawable/listview">
        <ImageView
            android:id="@+id/rightPanelImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="5dp"
            android:src="@drawable/sports"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="right panel"
            android:layout_marginTop="5dp"
            android:layout_below="@id/rightPanelImage"/>
</RelativeLayout>