如何在 RecyclerView 中的最后一项之后设置固定边距?
How to set constant margin after last item in RecyclerView?
我希望在 RecyclerView
中的 last item
之后有一些 space 就像图像一样。
图像不是处于项目数量少的状态,而是处于大到可以滚动的状态。
换句话说,当滚动到底部时,我希望最后一项位于图像黑条上方。
但是我实现的是:
如图所示,我实现的是项目穿透栏并叠加在底部。
滚动时,栏是否与项目重叠无关紧要,但滚动到底部时,我希望最后一个项目位于栏的顶部。
加法:
这些回收站视图动态添加和删除项目。
这一次你只需 post XML 代码。
如果您需要其他代码,请告诉我。
XML
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:background="@color/transparentBg"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_exercise"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="8dp">
<ImageView
android:id="@+id/add_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_add"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/black" />
<TextView
android:id="@+id/add_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="ADD ROUTINE"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_icon" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
您可以将 FrameLayout 设置为特定高度,然后将 recyclerview 边距底部设置为与框架布局高度相同。
或者您可以将 ConstraintLayout 更改为 LinearLayout。
如果您希望您的项目显示在添加图标下方(我个人不喜欢)并在底部添加一些额外的 space,您可以
- 在适配器的末尾添加一个空视图
- 设置
clipToPadding=false
并添加一个底部填充,使回收器视图从底部跳过该高度,但仍然像这样显示它们(而不是剪裁它们)(我不确定 160dp 是否是一个很好的数字总结了你的尺寸)
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent"
android:clipToPadding="false"
android:paddingBottom="160dp"/>
- 如果你想让你的回收站显示在添加按钮上方(我认为这样看起来更好),你可以这样更改
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button" />
我希望在 RecyclerView
中的 last item
之后有一些 space 就像图像一样。
图像不是处于项目数量少的状态,而是处于大到可以滚动的状态。
换句话说,当滚动到底部时,我希望最后一项位于图像黑条上方。
但是我实现的是:
如图所示,我实现的是项目穿透栏并叠加在底部。
滚动时,栏是否与项目重叠无关紧要,但滚动到底部时,我希望最后一个项目位于栏的顶部。
加法:
这些回收站视图动态添加和删除项目。
这一次你只需 post XML 代码。
如果您需要其他代码,请告诉我。
XML
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:background="@color/transparentBg"
app:layout_constraintBottom_toBottomOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/add_exercise"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="8dp">
<ImageView
android:id="@+id/add_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_add"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/black" />
<TextView
android:id="@+id/add_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="ADD ROUTINE"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_icon" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
您可以将 FrameLayout 设置为特定高度,然后将 recyclerview 边距底部设置为与框架布局高度相同。
或者您可以将 ConstraintLayout 更改为 LinearLayout。
如果您希望您的项目显示在添加图标下方(我个人不喜欢)并在底部添加一些额外的 space,您可以
- 在适配器的末尾添加一个空视图
- 设置
clipToPadding=false
并添加一个底部填充,使回收器视图从底部跳过该高度,但仍然像这样显示它们(而不是剪裁它们)(我不确定 160dp 是否是一个很好的数字总结了你的尺寸)
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent"
android:clipToPadding="false"
android:paddingBottom="160dp"/>
- 如果你想让你的回收站显示在添加按钮上方(我认为这样看起来更好),你可以这样更改
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/button" />