无法通过 eowise 捕获 Sticky Header (RecyclerView) 的 Child 视图的触摸事件

Can't catch touch event of Child View of Header of Sticky Header (RecyclerView) by eowise

我在这里使用库 "recyclerview-stickyheaders" link : https://github.com/eowise/recyclerview-stickyheaders 一切正常,我无法通过 .setOnHeaderClickListener(this) 使用 StickyHeadersBuilder class 捕捉触摸事件。但是我不能也不知道如何为 "header" 的 child 视图实现点击监听器(文本视图,header 中的按钮),在这种情况下是 btnFollow。它总是捕获整个 "header" 的触摸事件。我尝试在 ( HeaderAdapter ) 上为 Header 的 class ViewHolder 实现点击侦听器,但它不起作用。 * 在 MainActivity 中:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = (RecyclerView) findViewById(R.id.rv_timeline);
    adapterRecyclerView = new AdapterRecyclerTimeline(getApplicationContext(), getData());
    adapterRecyclerView.setClickListener(this);
    recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    adapterHeader = new AdapterTimelineHeader(getApplicationContext(), getData());
    adapterHeader.setClickListener(this);
    recyclerHeader = new StickyHeadersBuilder()
            .setAdapter(adapterRecyclerView)
            .setRecyclerView(recyclerView)
            .setStickyHeadersAdapter(adapterHeader)
            .setOnHeaderClickListener(this)
            .build();
    recyclerView.setAdapter(adapterRecyclerView);
    recyclerView.addItemDecoration(recyclerHeader);

}

@Override
public void onHeaderClick(View header, long headerId) {
    Toast.makeText(getApplicationContext(), "Header Clicked LIB", Toast.LENGTH_SHORT).show();
}

@Override
public void headerClicked(View view, int position) {
    Toast.makeText(getApplicationContext(), "Header Clicked MANUAL", Toast.LENGTH_SHORT).show();
}

该库实际上并未向屏幕添加任何视图 - 仅将 逐像素 视图复制到 canvas。这是代码:

```

canvas.save();
canvas.translate(0, y);
header.draw(canvas);
canvas.restore();

```

因此您的 header 实际上并未出现在屏幕上 - 只是视觉克隆。

可以处理 parent 视图上的点击 - 请参阅此 library(看起来几乎相同)

但从 parent 来看,将点击事件发送到 child(例如中的按钮)将极其困难。当然没有动画,因为你看到的实际上不是视图。