SwipeRefreshLayout 内的 NestedScrollView 内的 RecyclerView 不能平滑滚动

Posted

技术标签:

【中文标题】SwipeRefreshLayout 内的 NestedScrollView 内的 RecyclerView 不能平滑滚动【英文标题】:RecyclerView inside NestedScrollView inside SwipeRefreshLayout doesn't scroll smoothly 【发布时间】:2018-07-20 23:57:02 【问题描述】:

这是我的布局。

<android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/activity_main_swipe_refresh_layout"
        android:layout_
        android:layout_marginBottom="45dp"
        android:layout_>

    <android.support.v4.widget.NestedScrollView
        android:layout_
        android:layout_>

        <RelativeLayout
            android:layout_
            android:layout_
            android:focusableInTouchMode="true">

            <Button
                android:layout_
                android:layout_
                android:id="@+id/noob_button"
                android:text="haha" />

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recycler_view"
                android:layout_
                android:layout_
                android:layout_below="@+id/noob_button"
                android:orientation="vertical"
                android:clipToPadding="false"
                android:scrollbars="vertical" />
        </RelativeLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.v4.widget.SwipeRefreshLayout>

这些都在RelativeLayout里面。

我已经设置recyclerview.setNestedScrol..(false);

它仍然挂起,如果我设置RecyclerView 的固定高度它不会挂起。它滚动但滚动不流畅。

【问题讨论】:

【参考方案1】:

您实际上不需要在NestedScrollView 中添加RecyclerView。据我了解您的问题,您需要在按钮下方有一个Button 和一个RecyclerView。因此,您可以考虑将Button 添加为RecyclerView 的标题,这是更简洁的实现。

如果您想在RecyclerView 中添加标题,请参阅my answer here,了解如何实现。

我已经解释了如何添加页脚。同样的规则也适用于添加标题视图。如果您对此有任何进一步的问题,请告诉我。

【讨论】:

如果我把它作为标题,它将占据recyclerview的第一行,我将无法在recyclerview中管理来自api的数据 您当然可以管理从您的 API 接收到的数据。您需要在onBindViewHolder 中处理登录。如果您能帮助我们了解您所遇到的情况,那就太好了。这样我们就可以提供更具体的帮助。 recyclerview 是从我从 api 获得的数据中填充的,所以如果我放一个标题,这意味着标题将占据 recyclerview 的第一行,因此 json 数组第一个位置的数据将位于标题下方。 表示标题将与第一个数据重叠,如果我从第二个位置设置数据,那么在每次 api 调用时标题都会重复。我只是希望视图(Textview,viewpager)位于recyclerview之上,并且与recycler没有任何关系,但是当我们滚动recyclerview时会滚动,所以我使用了nestedcrollview,但它会导致滞后。我正在考虑在 api 中设置适当的数据,即第一个位置所需的数据。 不。每次调用 API 时,标头都不会重复,也不会与第一个数据重叠。我认为您误解了标题为RecyclerView 的想法。标题也可以有自定义布局。请先按照在RecyclerView 中添加标题的实现。你会有想法的。

以上是关于SwipeRefreshLayout 内的 NestedScrollView 内的 RecyclerView 不能平滑滚动的主要内容,如果未能解决你的问题,请参考以下文章

滚动视图内的约束布局,总是参考线高度变化

原创NES第三波_如何做一张NES贺卡

LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)

LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)

LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)

Android - V之SwipeRefreshLayout的使用