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 不能平滑滚动的主要内容,如果未能解决你的问题,请参考以下文章
LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)
LVGL+NES|基于lvgl实现nes模拟器(lv_100ask_nes)