【发布时间】:2018-04-06 10:29:55
【问题描述】:
我有一个水平的RecyclerView 和leftPadding = 48dp、topPadding = 24dp 和clipToPadding = false。它从左侧的空白区域开始,但是当用户滚动列表时,它的项目被绘制在那个(以前是空白的)空间上。顶部空间始终为空。
此RecyclerView 位于带有foreground = selectableItemBackground 的FrameLayout 中。
我的问题来自RecyclerView 消耗并忽略左侧和顶部空格的触摸,这意味着OnClickListener 不会被触发,无论是附加到FrameLayout 还是RecyclerView .
我已经在RecyclerView 上尝试了clickable = false 和focusable = false,它不起作用。
我在寻找什么:
编辑:我创建了一个简单的项目来显示我正在谈论的问题:https://github.com/dadino/recyclerviewemptyspacestest 有 2 次提交,第一次我尝试捕获对父视图的点击,第二次我尝试捕获对 RecyclerView 本身的点击。它们都不起作用。
【问题讨论】:
-
显示你的代码。
-
你想看什么代码?
-
在您的 recyclerview 适配器中,您必须放置一个全局点击列表器和项目点击列表器,确保您只对项目执行此操作。邮编了解更多详情
-
每个项目的视图都有自己的 clickListener,而不是适配器(即不是视图,不能注册 clickListener)。问题不在于项目的点击侦听器,而是未在项目范围之外注册的点击(其 clickListener 没有管辖权)。
-
这是我讲的结构合理的问题,我很喜欢阅读它。
标签: android android-recyclerview kotlin android-custom-view android-touch-event