添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

回收器视图不能点击

2 人关注

我有一个 LinearLayout ,里面有一个嵌套的 RecyclerView ,显示一个项目列表。我想在 RecyclerView 被点击时打开一个弹出窗口(无论是其中一个项目还是背景白色区域),但通常的 setOnClickListener 不起作用。

当然,我可以在每个项目上放置一个点击监听器,但它们之间的白色区域仍然无法点击。

是否有办法让整个 RecyclerView 区域都可以点击?

EDIT: 我已经添加了一些示例代码。我想让整个布局可以点击打开一个弹出窗口,但前三个视图表现正常,而 RecyclerView 则不然。

<LinearLayout
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
        android:layout_width="match_parent"
        android:layout_height="@dimen/spacing_half"
        android:background="@color/color_item_margin_divider"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/fragment_tags_title"
        style="@style/ItemFragmentHeader"/>
        android:layout_width="match_parent"
        android:layout_height="@dimen/spacing_line"
        android:background="@color/color_line_divider"/>
    <RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/spacing_half"/>
</LinearLayout>
    
5 个评论
对不起,但是......这对我的问题有什么帮助?
你应该公布你的代码。另外,检查你的父级视图,因为它们可能会捕获点击事件。你可以通过在父视图的XML中添加 android:clickable="true" 来禁用它--这可能有帮助。
请发布一些代码,我们会帮助你
我添加了一些示例代码,但它真的很简单。我想让整个版面都可以点击。
android
onclick
android-recyclerview
onclicklistener
Alessandro
Alessandro
发布于 2017-05-15
2 个回答
Panda2109
Panda2109
发布于 2021-09-30
0 人赞同

viewHolder 中添加 onClickListener 。下面是我的项目的一个片段,我已经实现了 Listener

public class MyViewHolder extends RecyclerView.ViewHolder {
       public ImageView shotThumbnail;
       public MyViewHolder(View view) {
                    super(view);
                    shotThumbnail = (ImageView) view.findViewById(R.id.shotThumbnail);
                    shotThumbnail.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            //Put here stuff that you want the onclickListener should do 

Check if this link helps: Detect click on RecyclerView outside of items

正如我在问题中所说,整个RecyclerView区域必须是可点击的,不仅是单个项目,甚至是它们的边缘。
分享一张它的图片,并可能标记出你想让人点击的区域?
你是否明确保留了一些填充物?
Unknown
Unknown
发布于 2021-09-30
0 人赞同

你应该使用padding而不是margin。

<RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_padding="@dimen/spacing_half"/>

因为每当你使用padding,它就会裁剪你的RecyclerView。但每当你使用padding时,它只会缩短你的内部函数。因此你需要padding。那么你应该在MainActivity中使用onClickListener。