RelativeLayout - 如果视图水平对齐,则无法使视图具有相同的垂直大小

时间:2017-09-02 17:14:37

标签: android android-layout android-relativelayout

我的布局有两个CardView,看起来像这样:

enter image description here

我想要正确的卡片固定宽度(90dp),左边的卡片要自动调整大小并填充剩余的空间。我目前这样做了:

    <RelativeLayout
        android:id="@+id/inventory_host_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">

        <android.support.v7.widget.CardView
            android:id="@+id/inventory_last_scanned_wrapper_card"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="20dp"
            android:layout_toLeftOf="@+id/inventory_scanned_infobox_wrapper_card">

            ...

        </android.support.v7.widget.CardView>

        <android.support.v7.widget.CardView
            android:id="@+id/inventory_scanned_infobox_wrapper_card"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="false"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_centerVertical="false"
            android:layout_marginRight="20dp"
            android:layout_marginTop="20dp">

            ...

        </android.support.v7.widget.CardView>

    </RelativeLayout>

左边的一个可以长大,所以我也希望正确的卡片始终与左边的卡片保持相同的高度。通常我会通过将layout_alignToplayout_alignBottom属性设置为其他View来进行这种对齐,但这次这些属性不可用,可能是因为这会创建循环引用(尽管我不喜欢我真的不明白水平对齐如何影响垂直对齐。该怎么办?我已经探索了其他几个选项但总是回到相同的点,除了硬编码高度或以编程方式设置它们当然我想避免。

1 个答案:

答案 0 :(得分:1)

您在哪里以及为什么会收到循环引用错误?只需设置

android:layout_alignBottom="@id/inventory_last_scanned_wrapper_card"

在右侧的卡片上,一切都应该有效。