与wrap_content的RecyclerView问题

时间:2017-05-24 21:50:36

标签: android xml android-recyclerview

我的应用程序中有以下布局。该卡包含RecyclerView以显示所有因素。我希望这张卡一直延伸到“统计”这个词,但如果RecyclerView中有很多元素,我就不会超过它。

enter image description here

我已尝试将高度设置为wrap_content,并尝试使用layout_weight使其正确换行,但它无法按预期工作。

enter image description here

这就是我的布局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>

0 个答案:

没有答案