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

回收器视图内部协调器布局

白赞
2023-03-14

<include layout="@layout/toolbar"
    android:id="@+id/survey_ques_toolbar"/>

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/survey_ques_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/survey_ques_toolbar"
    android:layout_marginTop="2dp" />

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="16dp"
    android:elevation="10dp"
    android:id="@+id/fab_submit"
    android:src="@drawable/ic_submit" />

当点击fab时,snack bar出现,为此我必须使用协调器布局将fab水平移动到snack bar上方。但现在回收器视图的前几个项目是不可见的。它只从项目3开始。能否有人帮助解决这一点和什么改变要做。提前谢谢!!

共有3个答案

白修谨
2023-03-14

将recyclerview放置在相对布局或任何其他布局中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
    tools:context=".MainActivity">
//Toolbar


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/survey_ques_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="2dp" />
    </RelativeLayout>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        app:srcCompat="@android:drawable/ic_dialog_email" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
赫连秦迟
2023-03-14

您的recyclerView似乎被包含的工具栏布局覆盖了。如果硬编码或使用默认高度,是否可以尝试添加与工具栏布局高度相同的上边距?attr/actionbarsize

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/survey_ques_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/survey_ques_toolbar"
android:layout_marginTop="?attr/actionBarSize" /><!-- or height you gave in toolbar layout -->
邹斌
2023-03-14

您将layout_belowle用于recyclerView,但此属性用于relativelayout子级,而不是coordinatorlayout。因此,您的项目在那里,但它们被Toolbar覆盖,因为RecyclerView不尊重在Toolbar下方对齐的通知。更改relativelayout的主容器以使layout_belowle属性工作

<RelativeLayout
    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:id="@+id/rootLayout_survey_ques"
    tools:context=".survey.SurveyQuesActivity">
...
</RelativeLayout>

请注意,为floatingactionbutton设置的android:layout_gravity=“bottomend”属性将停止工作,因为该属性要与linearlayoutframelayout一起使用,而不是与relativelayout一起使用。您可能希望使用

android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"

编辑:评论中的好观点。可以尝试为RecyclerView添加适当的上边距,将其放置在Toolbar下方,而不是上面的建议

android:layout_marginTop="?attr/actionBarSize"
 类似资料:
  • 我一直在尝试使用此处的少量指导来实现带有RecyclerView的CollapsingToolbar:http://android-developers.blogspot.co.uk/2015/05/android-design-support-library.html 和这里的项目:https://github.com/chrisbanes/cheesesquare,我目前有以下布局: 来源如下

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

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

  • 我的布局结构如下: 当我将RecyclerView添加到布局时,NestedScrollView将位于AppBarLayout下,如下图所示: 我测试了一些解决这个问题的方法,比如将NestedScrollView放入FrameLayout,或者向NestedScrollView添加和属性,但这些方法无法解决这个问题。

  • 我有“E/RecyclerView:没有连接适配器;跳过布局”错误消息。我在片段中有recycleView,所以我一定是在fragment1.java上做错了什么。 这是代码。如您所见,我在代码上设置了适配器,但我收到此错误。任何帮助将不胜感激。谢谢。 公共类Fragment1扩展片段{ } 公共类圣经适配器扩展回收器View.Adapter { }

  • 当我尝试在回收器视图中选择一个元素时,不会调用OnBindViewWholder。我使用的是一个水平布局,所有元素最初都不显示(7个元素中有4个显示,当用户向右移动时,3个元素交替显示)。通常,当用户单击一个元素时,OnBindViewWholder应该被激发,但对我来说却没有发生。它只在初始化时触发。因为它没有激发,所以我不能单击回收器视图中的任何元素。也许和我的布局有关?我不确定 MyAdap