Android 可点击的recyclerview区域在滚动之前不是100%宽度

Android 可点击的recyclerview区域在滚动之前不是100%宽度,android,android-recyclerview,Android,Android Recyclerview,我正在为一个android应用程序开发一个屏幕,我需要在每一行recyclerview中添加一个点击事件,它可以部分工作 问题是一旦加载了意图,可点击区域就被限制在内容的宽度范围内 只有在发生滚动后,recyclerview行从视口中完全隐藏时,可单击区域才能正常工作(100%宽度) 贝娄有一张gif图,可以说明我的问题。请注意,在滚动之前,可单击区域缩小为行内容,滚动之后,可单击区域填充行内容 只需更改ViewHolderCatalog类,如下所示 public static class V

我正在为一个android应用程序开发一个屏幕,我需要在每一行recyclerview中添加一个点击事件,它可以部分工作

问题是一旦加载了意图,可点击区域就被限制在内容的宽度范围内

只有在发生滚动后,recyclerview行从视口中完全隐藏时,可单击区域才能正常工作(100%宽度)

贝娄有一张gif图,可以说明我的问题。请注意,在滚动之前,可单击区域缩小为行内容,滚动之后,可单击区域填充行内容


只需更改ViewHolderCatalog类,如下所示

public static class ViewHolderCatalog extends RecyclerView.ViewHolder implements View.OnClickListener {
        public TextView txtItemName;
        public TextView txtItemPrice;

        public ViewHolderCatalog(View itemView) {
            super(itemView);
            txtItemName = (TextView) itemView.findViewById(R.id.txt_catalog_item_name);
            txtItemPrice = (TextView) itemView.findViewById(R.id.txt_catalog_item_price);

            itemView.setOnClickListener(this);
        }

    @Override
    public void onClick(View v) {
            Toast.makeText(v.getContext(), “You clicked your your recycler view item”, Toast.LENGTH_SHORT).show();
    }

}

该问题与content_catalog.xml文件中的ConstraintLayout有关


类似的问题正在发生,因此要解决它,请尝试简单地用其他东西(如LinearLayout或RelativeLayout)替换它,这样就可以解决视图在滚动重新呈现之前不会扩展的问题

出于好奇,在catalog_item.xml中,如果向根线性布局添加一个id,然后将onClickListener设置为该布局而不是itemview,您是否面临同样的问题?(别忘了将clickable='false'添加到2个文本视图中,这样点击将传递到基本布局)@Silmarilos更改后问题/错误仍然存在。。无论如何,感谢您的评论。另一个想法是,在content_catalog.xml文件中,用RelativeLayout或LinearLayout替换基本ConstraintLayout,然后尝试该设置。我很好奇这个问题是否与app:layout\u behavior标签有关。@Silmarilos在将ConstraintLayout替换为LinearLayout后,一切正常!请将此评论作为答案。您忘记设置itemView了。ViewHolder构造函数中的setOnClickListener(this)