RecyclerView填充LinearLayout内的空白空间

时间:2018-07-12 17:54:05

标签: android android-layout android-recyclerview

背景

我有一个页眉和页脚(LinearLayout),它们之间有一个RecyclerView

问题

我需要页脚保持固定在屏幕底部,并且RecyclerView填充空白

enter image description here

我尝试过的

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:id="@+id/constraintLayout"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:gravity="center_horizontal"
              android:orientation="vertical"
              tools:context="br.com.sigane.coletordifal.activity.EnderecamentoActivity">
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Header" />
    </LinearLayout>
    <android.support.v7.widget.RecyclerView
                  android:id="@+id/produtos_list"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:scrollbars="vertical" />
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Footer" />
    </LinearLayout>
</LinearLayout>

也尝试使用ConstraintLayout,但没有成功

3 个答案:

答案 0 :(得分:1)

尝试一下

android:layout_height="0dp"android:layout_weight="1"添加到RecyclerView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Header" />

    </LinearLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/produtos_list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:scrollbars="vertical" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Footer" />

    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

我认为您不需要单独的线性布局。我认为只有一个就足够了。只需像这样为您的recyclerview和footer设置权重即可。

 <android.support.v7.widget.RecyclerView
        android:id="@+id/produtos_list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:scrollbars="vertical" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
        android:text="Footer" />

答案 2 :(得分:0)

我建议使用约束布局,它是类固醇上的FrameLayout。如果您使用的是Android Studio 3.2,请在设计视图中的根元素上单击鼠标右键,以显示带有“转换为constraintlayout”选项的菜单

您不希望这样嵌套布局的原因,每个嵌套元素都会导致额外的度量传递,嵌套布局比平面布局更凌乱并且更难充气。

强烈建议花一个小时左右的时间来阅读有关约束布局及其使用方法的信息。您不会后悔的,这使我的工作效率提高了2倍。

希望这会有所帮助。