gpt4 book ai didi

android - 如何处理 RecyclerView.ItemDecoration 中的点击事件?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:25 28 4
gpt4 key购买 nike

我有一个 RecyclerView(带有 LinearLayoutManager)和一个自定义的 RecyclerView.ItemDecoration。

比方说,我想在装饰 View 中添加按钮(出于某种原因......)。

我用按钮给布局充气,它绘制正确。但我无法使按钮可点击。如果我按下它,什么也不会发生(它保持不变,没有按下效果)并且不会触发 onClick 事件。

ItemDecoration布局的结构是

<LinearLayout>
<TextView/>
<Button/>
</LinearLayout>

我正在尝试在装饰的 ViewHolder 中设置监听器

class ItemDecorationHolder extends RecyclerView.ViewHolder {
public TextView header;
public Button button;

public HeaderHolder(View itemView) {
super(itemView);

header = (TextView)itemView.findViewById(R.id.header);
button = (Button)itemView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//.. Show toast, etc.
}
});
}
}

我在 onDrawOver 方法中绘制装饰。 (实际上,我正在修改这个代码库:https://github.com/edubarr/header-decor)

有什么想法吗?可行吗?

谢谢!

最佳答案

虽然真正的标题是滚动到屏幕外的,但可见的标题是直接在 Canvas 上绘制的,不像普通的交互式小部件。

你有这些选择

  1. 覆盖 RecyclerView.onInterceptTouchEvent(),尽管有一些侵入性,所以我更喜欢下一个。
  2. 利用 RecyclerView.addOnItemTouchListener(),记住运动事件参数已转换为 RecyclerView 的坐标系。
  3. 使用真正的标题 View ,但我认为这会走得更远。

If you take option 1/2, Button.setPressed(true) and redraw the header will have a visual press effect.

关于android - 如何处理 RecyclerView.ItemDecoration 中的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102738/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com