如何让RecyclerView
不可点击?因为我的RecyclerView
只显示一些小图标,而这些图标位于可以被点击的CardView
内部。所以如果有人点击这些图标,应该只会触发它们父级的CardView
的点击(和动画)。
我已经尝试了以下方法:
recyclerView.setClickable(false);
recyclerView.setFocusable(false);
- 扩展
RecyclerView
并使onTouchEvent(MotionEvent)
返回false
。 - 使用上述方法3,并在
RecyclerView
适配器中使用itemView.setClickable(false);
。 这个方法有效,点击事件被发送到了父级。但是,现在RecyclerView
不再可滚动。 - 在膨胀的列表项XML中设置
clickable="false"
、focusable="false"
、focusableInTouchMode="false"
。(参见评论@Ibrahim) - 调用
recyclerView#setLayoutFrozen(true)
和itemView.setClickable(false);
。 这个方法有效,但具有与#4相同的问题。
有什么好的方法可以禁用并将RecyclerView
的点击事件传递给父视图吗?请注意,RecyclerView
仍然需要可滚动(水平方向)。
编辑:
用户@c.dunlap建议为图标设置OnClick监听器,并将点击“重定向”到父级的点击操作。这样做是可行的,但父级视图将没有点击动画。而且,如果有人在itemView外面点击--但仍然在RecyclerView
内(例如,ItemDecoration padding),则不会检测到该点击。因此,很遗憾这不是一个解决办法。
onBindViewHolder(...)
中唯一的代码是将 Drawable 设置到ImageView
上。 - Thomas Vosclickable
,focusable
和focusableontouchmode
设置为false了吗? - user6490462