我的
RecyclerView
里面有一个 HorizontalScrollView
。我看不到里面RecyclerView
所有的物品。我看过,即使适配器中的列表有 7 个项目,onBindViewHolder
也只被调用了 4 次!如果我取出HorizontalScrollView
,就可以了。
我使用
HorizontalScrollView
,因为我需要在回收站的背景下滚动列表,而不是在回收站内,它通常是如何工作的。
所以,我需要一个解决方案来滚动带有列表背景的列表,或者使用
HorizontalScrollView
显示所有项目
更新:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="20dp">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:scrollbars="none"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/label">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/rlWrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/paddingStartView"
android:background="@drawable/bg_round_corner">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/optionsRv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent" />
</RelativeLayout>
<View
android:id="@+id/paddingStartView"
android:layout_width="16dp"
android:layout_height="16dp" />
<View
android:id="@+id/paddingEndView"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_toEndOf="@id/rlWrapper" />
</RelativeLayout>
</HorizontalScrollView>
<TextView
android:id="@+id/label"
style="@style/FontLocalizedMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textAllCaps="true"
android:textColor="#979797"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Tempareature" />
</androidx.constraintlayout.widget.ConstraintLayout>
使
HorizontalScrollView
的子代成为 RelativeLayout
而不是 LinearLayout
我也刚刚遇到了这个问题,接受的答案很有帮助。我有:
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
android:fillViewport="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dates_recycler"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</HorizontalScrollView>
并且它没有在水平方向的回收器视图中显示所有项目。它只显示了适合设备视图宽度的足够项目,多次调用
onBindViewHolder
等等。在 RelativeLayout
和 HorizontalScrollView
之间添加 RecyclerView
修复了它,以便它显示所有内容项目是否适合设备的宽度,您可以滚动找到它们。
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
android:fillViewport="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/dates_recycler"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</androidx.recyclerview.widget.RecyclerView>
</RelativeLayout>
</HorizontalScrollView>
我认为还将
android:layout_width="match_parent"
设置为RelativeLayout
是关键。
onBindViewHolder
仅针对“屏幕上可见”的项目调用。如果总项目是 7 并且屏幕只能显示 4,那么一切都可以。
因此得名“RecycleView”,它回收可见的视图,你的
RecycleView
中总共只有4个视图
这个我不明白你的意思!?
我使用 HorizontalScrollView 因为我需要滚动列表 来自回收站的背景,而不是回收站内的背景,它通常是如何工作的。
所以,我需要一个解决方案来滚动带有背景的列表 列表,或使用 HorizontalScrollView 显示所有项目
只需使用此格式即可。我希望它能解决你的问题。
<HorizontalScrollView
android:layout_below="@id/ss"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/demorecview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
</HorizontalScrollView>