【问题标题】:How to eliminate white spaces at the bottom of the screen while using RecyclerView使用 RecyclerView 时如何消除屏幕底部的空白
【发布时间】:2019-12-26 14:12:01
【问题描述】:

我正在为 RecyclerView 项使用 RecyclerView 和约束布局。 我在 RecyclerView 中使用了两个视图。 1)ItemViewHolder 2) 页脚视图持有者 下面是我的 FooterViewHolder 布局代码,

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linearLayout3"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
    android:id="@+id/world_credits_description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:textColor="@color/black"
    android:textSize="20sp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/description_1_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textColor="@color/black"
        android:layout_marginTop="20dp"
        app:layout_constraintTop_toBottomOf="@id/world_credits_description"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>
    <TextView
        android:id="@+id/description_2_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:textColor="@color/black"
        android:textSize="15sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/description_1_text_view"/>

    <Button
        android:id="@+id/cost_1_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="$10"
        android:layout_marginTop="20dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.226"
        app:layout_constraintHorizontal_chainStyle="spread"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/description_2_text_view" />

    <Button
        android:id="@+id/cost_2_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="$20"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toEndOf="@id/cost_1_button"
        app:layout_constraintTop_toBottomOf="@id/description_2_text_view"/>

    <Button
        android:id="@+id/cost_3_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="$30"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toEndOf="@id/cost_2_button"
        app:layout_constraintTop_toBottomOf="@id/description_2_text_view"/>
    <Button
        android:id="@+id/add_credits_button"
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add Credits"
        app:layout_constraintTop_toBottomOf="@id/cost_1_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>
    <ListView
        android:id="@+id/rate_category_details_list_view"
        android:layout_width="wrap_content"
        android:divider="@null"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/add_credits_button"
       />
</androidx.constraintlayout.widget.ConstraintLayout>

下面是ItemViewHolder布局的代码,

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<TextView
    android:id="@+id/package_name_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/black"
    android:textSize="20sp"
    android:text="Package Name"
    android:layout_marginTop="20dp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@id/start_guideline"
    />
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/start_guideline"
        android:layout_width="wrap_content"
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        app:layout_constraintGuide_percent="0.05"/>
    <TextView
        android:id="@+id/subscription_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="14sp"
        android:layout_marginTop="10dp"
        app:layout_constraintTop_toBottomOf="@id/package_name_text_view"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>
    <TextView
        android:id="@+id/package_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="15sp"
        android:layout_marginTop="15dp"
        app:layout_constraintTop_toBottomOf="@id/subscription_text_view"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        />


    <ImageView
        android:id="@+id/flag_1"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:scaleType="fitXY"
        android:layout_marginStart="152dp"
        android:layout_marginTop="15dp"
        app:layout_constraintHorizontal_chainStyle="spread"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/package_description" />

    <ImageView
        android:id="@+id/flag_2"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:scaleType="fitXY"
        android:layout_marginTop="15dp"
        app:layout_constraintStart_toEndOf="@id/flag_1"
        app:layout_constraintTop_toBottomOf="@id/package_description"/>
    <ImageView
        android:id="@+id/flag_3"
        android:scaleType="fitXY"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginTop="15dp"
        app:layout_constraintStart_toEndOf="@id/flag_2"
        app:layout_constraintTop_toBottomOf="@id/package_description"/>
    <ImageView
        android:id="@+id/show_multiple_countries"
        android:scaleType="fitXY"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:src="@drawable/right"
        android:layout_marginTop="24dp"
        app:layout_constraintTop_toBottomOf="@id/package_description"
        app:layout_constraintStart_toEndOf="@id/flag_3"

        />

    <TextView
        android:id="@+id/validity_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="25sp"
        android:layout_marginTop="20dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/flag_1"
        app:layout_constraintVertical_bias="0.028" />

    <Button
        android:id="@+id/activate_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:background="@color/nexge_blue"
        android:textColor="@color/color_white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/validity_text_view"
        app:layout_constraintVertical_bias="0.038" />

    <View
        android:id="@+id/first_divider"
        android:layout_width="wrap_content"
        android:layout_height="1dp"
        android:layout_marginTop="15dp"
        android:background="@android:color/darker_gray"
        app:layout_constraintBottom_toBottomOf="@id/or_text_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/or_text_view"/>

    <TextView
        android:id="@+id/or_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Or"
        android:background="@color/white"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:padding="5dp"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/activate_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

下面的代码是RecyclerView,

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/show_offer_details_relative_layout"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    >

    <TextView
        android:id="@+id/no_record_text_view"
        android:layout_width="wrap_content"
       android:layout_centerInParent="true"
        android:textSize="25sp"
        android:layout_height="wrap_content" />
    <ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
    <include
        android:id="@+id/header"
        layout="@layout/header_view" />


    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/header" />

</RelativeLayout>

有时如果我显示一两行,那么在滚动时屏幕的一半正在滚动。 1)设置RecyclerView的FooterView时,约束布局高度来包裹内容,Listview只显示一项。 这真的很糟糕。请任何人帮助我。在此先感谢。

【问题讨论】:

    标签: android android-recyclerview android-constraintlayout


    【解决方案1】:

    将您的 Recyclerview 约束布局高度 match_parent 更改为 wrap_content

    【讨论】:

    • 我在页脚视图中使用列表视图。当我更改匹配父项以在 FooterView 约束布局中包装内容时。仅显示列表视图中的第一项。
    • MeanWhile 如果 ItemViewHolder 中只有一个项目,则滚动阴影在屏幕的一半可见。看起来真的很糟糕
    【解决方案2】:

    更改 FooterViewHolder 布局高度以包裹内容。 “匹配父级”使其充满整个显示。

    【讨论】:

    • 我也试过了...那时只显示列表视图中的一个项目,其余的被隐藏...。同样,如果 ItemViewHolder 中只有一个项目并且没有附加页脚,然后尝试按我的意愿滚动​​屏幕不滚动,但滚动中的阴影显示为屏幕的一半
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2019-12-16
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多