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

RecyclerView在ScrollView中不是真正的wrap_content

党权
2023-03-14

我有一个<code>滚动视图,其中包含一个垂直<code>线性布局 这是一个地方,我在这里添加了一些称为“Section”的视图。“Section”是一个线性布局,,其中包含文本视图和`RecyclerView'。

<ScrollView
    android:id="@+id/main_scrollview"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/sections_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" />
</ScrollView>

部分:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:textSize="@dimen/activity_starred_title_textsize" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

问题是,RecyclerView有时并不是真正的wrap_content。因此,它创建了两种类型的问题(取决于我尝试使用的解决方案类型)。

> < li>

它可以是不可滚动的(因此它与屏幕高度匹配,我不能向下滚动它来查看里面的其余项目)。

它可以嵌套滚动。

最初的问题是它有嵌套滚动。所以我希望RecyclViews像简单的垂直LinearLayout一样,唯一必须具有滚动效果的是rootScrollView。

我试过做什么?

>

  • 扩展GridLayoutManager并覆盖canScrollVerally()。方法

    公共布尔canScroll垂直(){返回false;}

    扩展 RecyclerView 类并重写

    @Override public boolean onInterceptTouchEvent(MotionEvent event){ return false; }

    @Override public boolean onTouchEvent(MotionEvent event){ return false; }

    在可能的情况下,通过xml随时随地禁用NestedScrolling

    使用此解决方案覆盖 GridLayoutManager:解决方案

  • 共有2个答案

    艾令秋
    2023-03-14

    接下来的解决方案是:1. 使用 NestedScrollView 2。Override GridLayoutManager.canScrollVertally():

    public boolean canScrollVertically(){ return false; }
    
    单耘豪
    2023-03-14

    不要在 ScrollView 中使用 RecyclerViewListView对于嵌套滚动,您应该使用嵌套滚动视图

    < code>NestedScrollView就像< code>ScrollView,但它支持在新版本和旧版本的Android上同时充当< code >嵌套滚动父级和子级。默认情况下,嵌套滚动是启用的。

    解决方案:

    1. 不要使用 ScrollView,而是使用 NestedScrollView 作为 Section part(RecyclerView 和其他视图)的容器。

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/main_scrollview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <LinearLayout
            android:id="@+id/sections_layout"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <!-- Your Section:: RecyclerView and other Views -->
    
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
    

    2.对于滚动问题,请使用< code > setNestedScrollingEnabled(false)到您的< code>RecyclerView。

     类似资料:
    • 我正在尝试实现一个布局,它在同一布局中包含RecyclerView和ScrollView。 布局模板: 问题:我可以滚动到的最后一个元素 我尝试过的事情: 中的 卡片视图(现在包含)-可以查看卡片直到 最初的想法是使用而不是使用来实现这个,后者的视图类型之一是,但我得到的结果与使用完全相同

    • 我正在使用最新的支持设计(),23.2版本中的支持设计应该已经解决了ScrollView内部的RecyclerView问题。RecyclerView和ExpandableListView滚动都能很好地工作。但是当ExpandableListView太长时,我希望能够向上滚动布局,以便可以看到其余部分时,scrollview就无法工作。 片段: xml:

    • 在< code>NestedScrollView的末尾有一个< code > endlesscrecyclerview 。< code>EndlessRecyclerView表示:当用户滚动到RecyclerView的底部时,它会加载更多数据。这已经在其他地方实现并运行了,但是当我将recyclerView放入< code>NestedScrollView时,< code>OnScrollList

    • 我试图在滚动视图中显示水平的recyclerview项和垂直的recyclerview项 即使我使用android:fillViewport=“true”,Scrollview也无法工作

    • 我试图在ScrollView中有一个RecyclerView。我的问题是,当我滚动RecyclerView时,这并不“平滑”:一旦你松开手指,滚动就会立即停止。 我在片段中的布局是: 滚动视图 线性布局 文本视图 回收r查看 按钮 我尝试禁用嵌套滚动: 以及mRecyclerView的包装内容: 获得我想要的平滑滚动,但通过这种方式,RecyclerView的高度比它应该的要小(并且它不再滚动,所

    • 我在ScrollView中有一个这样的RecyclerView: 的项目是一个,其中有一个和其他视图。该和的都是。用户可以在没有任何长度/行限制的情况下输入到该中,以便每个项目的高度都不同。 然后我发现中的返回真值,但调用的时间错误(少于应有的时间),因此不足以显示所有项目。 我发现只有当我编写了时才会发生这种情况。但是我不能删除这一行。因为如果我这样做了,将无法流畅滚动,并且与和本身内的其他视图