当前位置: 首页 > 知识库问答 >
问题:

无法通过eowise捕获粘性标头(RecyclerView)的标头的子视图的touch事件

蓬兴国
2023-03-14
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();
}
public ViewHolder(View itemView) {
    super(itemView);
    profile = (RelativeLayout) itemView.findViewById(R.id.profile);
    tvProfileName = (TextView) itemView.findViewById(R.id.tv_profile_name);
    btnFollow = (TextView) itemView.findViewById(R.id.btn_follow);
    btnFollow.setOnClickListener(this);
    L.m("Set Listener FOLLOW");
}

@Override
public void onClick(View v) {
    if (clickListener != null) {
        L.m("Do Click FOLLOW");
        clickListener.headerClicked(v, getPosition());
    }
}

public void setClickListener(ClickListener ClickListener){this.ClickListener=ClickListener;}

谢谢大家!

共有1个答案

翟鸿振
2023-03-14

这些库实际上并不向屏幕添加任何视图--只将像素一个像素一个像素的视图复制到画布。代码如下:

```

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

```

 类似资料:
  • 问题内容: 我正在尝试创建一个粘性补充标题,该标题始终保持在顶部,并且不会响应滚动事件。到目前为止,我发现的解决方案仍然可以对快速滚动进行反应,并使用自定义flowLayout进行了修复,这也可能是解决我的问题的方法。 我想要这种方式的原因是该标头在其他地方使用并且应该可重用。我希望可以通过这种方式解决此问题,而不必创建单独的视图。 当我在Swift中进行此操作时,在Swift中有一个示例将是很棒

  • 问题内容: 我想以一种优雅的方式在用户滚动时在窗口顶部“收集”多级标题,并让我获得90%的访问权限。以下代码段的工作方式与我想要的一样,但有一个例外:标题2b到达顶部时,标题3b仍然可见。由于标头3b是标头2a的“子级”,因此我希望标头2b到达顶部后,滚动标头即可滚动或以某种方式隐藏。(可以预料,标题1b和标题2d都有相同的问题。) 我知道我在这里拥有CSS 应该 是如何工作的,但是有没有一种优雅

  • 服务工作者内部的fetch事件似乎没有接收到请求头,尽管MDN文档中有说明: 通过调用FetchEvent返回的request对象的参数,可以检索关于每个请求的大量信息: 事件要求url 事件。要求方法 事件。要求标题 事件。要求身体 从主线程获取资源的代码: 在SW文件中获取事件处理程序: 记录每个fetch事件的标题会给我一个空对象: 标题{} 这阻止了我缓存这个只需要这两个头的特定请求。不需

  • 问题内容: 我想知道当向下滚动页面时如何使粘性标头收缩(带有动画),而当页面向上滚动至顶部时又如何回到正常状态。 我得到了固定的零件,但是当用户向下滚动时,应该如何缩小标题呢? 万分感谢 问题答案: 这应该是您使用jQuery寻找的东西。

  • 我正在使用ASP.NET WebApi创建一个RESTful API。我正在我的一个控制器中创建一个PUT方法,代码如下所示: 当我通过AJAX使用浏览器将其放到该位置时,它给出了以下例外情况: 标头名称使用不当。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpReponseMessage一起使用,内容标头与HttpContent对象一起使用。 但是不是一个完全有效的

  • 问题内容: 我已经为这个错误苦苦挣扎了一段时间了。 首先,我只是以为是空格,但经过进一步研究,我认为这可能是与此类似的问题: 在此标头语句之前,查找所有可能将输出发送给用户的语句。如果找到一个或多个,请更改代码以将标头语句移到它们之前。复杂的条件语句可能会使问题复杂化,但也可能有助于解决问题。考虑一下PHP脚本顶部的条件表达式,该条件表达式尽早确定标头值并将其设置在那里。 我猜想include标头