我的应用程序中有以下布局。该卡包含RecyclerView
以显示所有因素。我希望这张卡一直延伸到“统计”这个词,但如果RecyclerView
中有很多元素,我就不会超过它。
我已尝试将高度设置为wrap_content
,并尝试使用layout_weight
使其正确换行,但它无法按预期工作。
这就是我的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Title and subtitle-->
<LinearLayout>
...
</LinearLayout>
<!-- Main content -->
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:paddingTop="@dimen/content_padding_top"
android:scrollbars="vertical"/>
<Button
android:id="@+id/button"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/button_padding_bottom"
android:paddingEnd="@dimen/button_padding_end"
android:paddingStart="@dimen/button_padding_start"
android:paddingTop="@dimen/button_padding_top"
android:text="@string/view_all"
android:textColor="@color/primary_text"/>
</LinearLayout>
</android.support.v7.widget.CardView>
修改
我找到了解决方案。我需要提供RecyclerView
一个layout_weight
以及<include>
标记我需要添加layout_weight
和一些padding
以允许卡的阴影要正确显示。
card.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Title and subtitle-->
<LinearLayout>
...
</LinearLayout>
<!-- Main content -->
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:paddingEnd="8dp"
android:paddingStart="8dp"
android:paddingTop="@dimen/content_padding_top"
android:scrollbars="vertical"/>
<Button
android:id="@+id/button"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/button_padding_bottom"
android:paddingEnd="@dimen/button_padding_end"
android:paddingStart="@dimen/button_padding_start"
android:paddingTop="@dimen/button_padding_top"
android:text="@string/view_all"
android:textColor="@color/primary_text"/>
</LinearLayout>
</android.support.v7.widget.CardView>
fragment.xml之
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout_main"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="8dp">
<!-- Number input -->
<TextView/>
<LinearLayout>
...
</LinearLayout>
<!-- Range input -->
<TextView/>
<LinearLayout>
...
</LinearLayout>
<!-- Search status -->
<include
android:id="@+id/search_results"
layout="@layout/search_status"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="8dp"
android:visibility="invisible"/>
<!-- Statistics -->
<LinearLayout>
...
</LinearLayout>
</LinearLayout>
<!-- Bottom sheet -->
<include
android:id="@+id/bottom_sheet"
layout="@layout/bottom_sheet"/>
</android.support.design.widget.CoordinatorLayout>