滚动 android recyclerview 禁止点击屏幕

Posted

技术标签:

【中文标题】滚动 android recyclerview 禁止点击屏幕【英文标题】:Scrolling the android recyclerview inhibits clicking on the screen 【发布时间】:2021-08-13 11:27:22 【问题描述】:

我在我的安卓移动应用中遇到了这个问题,我正在使用 kotlin。

在项目的主体中,我有一个通过 RecyclerView 制作的卡片列表,当卡片的数量超过屏幕可以容纳的数量时,垂直滚动正确启用。一旦我垂直滚动列表,操作就完成了,但释放后我不能再点击我的应用程序中的任何地方。 (点击在应用程序之外工作) 这是那段代码的 html

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
     android:id="@+id/itemsswipetorefreshSite"
     android:layout_
     android:layout_
     android:layout_weight="1">
     <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerViewSite"
        android:layout_
        android:layout_
        android:clipToPadding="false"
        android:paddingBottom="@dimen/twenty">
     </androidx.recyclerview.widget.RecyclerView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

这段代码包含在 CoordinatorLayout 中,其中有一个 ConstraintLayout,而 ConstraintLayout 又包含一个包含列表的 LinearLayout

在应用程序的其他部分或其他组件/片段中不会出现相同的问题,我有其他列表,以完全相同的方式制作,但在这种情况下它们不会产生此错误。

出现错误时(从滚动开始)产生的日志如下:

I/HwViewRootImpl: removeInvalidNode jank list 中的所有节点都超时 W/HiTouch_PressGestureDetector:触摸指针移动很多。 X的移动距离是:7.0,极限是:60Y的移动距离是:61.94568,极限是:60 D/OverScrollerOptimization:投掷时间为 flingTime = 1.9100340578075632 速度 = 1261 D/OverScrollerOptimization:投掷时间为 flingTime = 1.9100340578075632 速度 = 1261

但产生了相同的结果,在相同操作的其他列表中非常相似。

您的每一次帮助都非常宝贵,谢谢!

【问题讨论】:

【参考方案1】:

swipeRefreshlayout 和您的recyclerView 中将layout_height 设置为wrap_content

【讨论】:

感谢您的回复,但不幸的是,这对我的问题没有任何帮助【参考方案2】:

[已解决]

也许它可以帮助与我处于相同情况的人:我发现在有问题的列表的适配器文件中我找到了一个

requireActivity (). window.setFlags (WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)

它不必在那里,每次我触摸列表时它都会被激活。匆忙复制和粘贴的典型问题。

【讨论】:

以上是关于滚动 android recyclerview 禁止点击屏幕的主要内容,如果未能解决你的问题,请参考以下文章

单击项目Android时RecyclerView滚动

Android:RecyclerView里面的RecyclerView,滚动到底部

Android10.5 滚动视图(RecyclerView)

Android水平RecyclerView滚动方向

Android必知必会 - RecyclerView 恢复上次滚动位置

Android-RecyclerView系列 RecyclerView滚动指定位置到屏幕中间