RelativeLayout - 如果水平对齐,则不能使视图具有相同的垂直尺寸
RelativeLayout - can't make views the same vertical size if they are horizontally aligned
我的布局有两个 CardView
,看起来像这样:
我希望右边的卡片宽度固定 (90dp),左边的卡片自动调整大小并填充剩余的 space。我目前是这样做的:
<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_alignTop
和 layout_alignBottom
属性设置为其他 View
来进行这种对齐,但这次这些属性不可用,可能是因为这会创建循环引用(尽管我不'真正理解水平对齐如何影响垂直)。该怎么办?我已经探索了其他几个选项,但总是回到同一个点,除了硬编码高度或以编程方式设置它们,当然我想避免。
您在哪里以及为什么会收到循环引用错误?只需设置
android:layout_alignBottom="@id/inventory_last_scanned_wrapper_card"
在右侧的卡片上,一切正常。
我的布局有两个 CardView
,看起来像这样:
我希望右边的卡片宽度固定 (90dp),左边的卡片自动调整大小并填充剩余的 space。我目前是这样做的:
<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_alignTop
和 layout_alignBottom
属性设置为其他 View
来进行这种对齐,但这次这些属性不可用,可能是因为这会创建循环引用(尽管我不'真正理解水平对齐如何影响垂直)。该怎么办?我已经探索了其他几个选项,但总是回到同一个点,除了硬编码高度或以编程方式设置它们,当然我想避免。
您在哪里以及为什么会收到循环引用错误?只需设置
android:layout_alignBottom="@id/inventory_last_scanned_wrapper_card"
在右侧的卡片上,一切正常。