当前位置: 首页 > 知识库问答 >
问题:

使回收器视图可垂直滚动

卓正业
2023-03-14

我正在使用下面的代码创建一个回收器视图。recyclerview有一个网格布局管理器,其项计数最多为每行2个。

 <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="match_parent"
        android:background="@color/white"
        android:clickable="true"
        android:focusableInTouchMode="true"
        android:focusable="true">

    <ImageView
        android:id="@+id/backPress"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/hello"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Title!"
        android:textSize="30sp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        />

    <TextView
        android:id="@+id/textGoing"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Subtitle"
        android:textSize="@dimen/text_average"
        android:textStyle="bold"
        app:layout_constraintTop_toBottomOf="@+id/hello" />
    <com.google.android.material.textfield.TextInputLayout
        android:layout_margin="@dimen/dimen_20"
        app:layout_constraintTop_toBottomOf="@+id/textGoing"
        android:id="@+id/anchor_input"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:boxBackgroundColor="@android:color/white"
        android:background="@android:color/transparent" >

        <EditText
            android:id="@+id/anchor_edit_txt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </com.google.android.material.textfield.TextInputLayout>

    <TextView
        app:layout_constraintTop_toBottomOf="@+id/anchor_input"
        app:layout_constraintStart_toStartOf="@+id/anchor_input"
        android:id="@+id/anchor_hint"
        android:layout_below="@+id/anchor_input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />


    <Button
        android:id="@+id/add_cat_btn"
        app:layout_constraintTop_toBottomOf="@+id/anchor_hint"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_below="@+id/anchor_hint"
        android:layout_marginTop="@dimen/dimen_20"
        android:text="START"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"/>

    <TextView
        android:id="@+id/category_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/add_cat_btn"
        android:text="Description"/>
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/category_rv"
        app:layout_constraintTop_toBottomOf="@+id/category_title"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
        tools:itemCount="4"
        android:layout_margin="@dimen/dimen_20"/>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/move_next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:fabSize="normal"
        app:tint="@android:color/white"
        app:layout_constraintEnd_toEndOf="@+id/category_rv"
        app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

不幸的是,我嵌套在ConstraintLayout中的回收器视图根本没有滚动。我错过了什么?约束布局是否支持相同的?

共有1个答案

禄仲渊
2023-03-14

错误来自

tools:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:itemCount="4"

将其替换为

app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4"
 类似资料:
  • 我有一个水平回收视图。每个子级包含一个TextView和一个垂直RecyclerView。垂直RecyclerView的子级仅包含TextView。 垂直滚动非常平滑,但水平滚动滞后很多。我已经尝试在onBindViewHolder中使用swapAdapter,而不是setAdapter,但这并没有解决问题。我也尝试过更改数据集并调用notifyDataSetChanged(),但这也没有帮助。

  • 我想在垂直视图页中实现一个recyclerview。我当前的布局如下所示 如果我从Fragment1滑动到Fragment2,一切正常。我可以在回收器视图中上下滚动。如果我尝试滑动/滚动回Fragment1,就会出现问题。 如果用户已滚动到回收器视图的顶部,我想将下一个“向上”滚动事件转发到垂直视图页页面。我尝试过重写 方法,但遗憾的是仍然没有成功。有什么想法吗?感谢您的帮助:)

  • 我有一个父回收器视图,其中包含一个水平回收器视图作为其项目。在其中,我将显示分类视频。当我开始滚动水平回收器视图时,应用程序崩溃。 错误是: 我的代码是category类 垂直适配器 水平适配器

  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:

  • 我想制作一个类似视图的电子表格来显示一些数据。到目前为止,这是我所拥有的,但我一次只能滚动一种方式。我希望能够同时水平和垂直滚动。 现在我有一个水平滚动视图内的回收器视图。 这是我的回收器查看行布局。 这是我在Java中设置我的recyclerView的地方。 任何帮助都将不胜感激。谢谢!

  • 所以我在垂直ScrollView中有一个水平回收器视图。我的布局中的所有内容都显示得很好,并且都按照我想要的方向滚动,并且它做得很好。 我唯一的问题是,RecyclerView位于ScrollView中其他内容的下方,当RecyclerViewer部分可见时,它会在启动时将RecyclerView的底部与屏幕的底部对齐。这意味着RecyclerView上方的内容被推离屏幕。 有谁知道为什么会发生这