RecyclerView onDrawOver 视图在滚动后消失

RecyclerView onDrawOver view disappear after scroll

我想在滚动到某个位置(例如:3)后在 RecyclerView 上显示一个视图(例如 TextView),所以我使用

public class HeaderItemDecoration extends RecyclerView.ItemDecoration {

    @Override
    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
        super.onDrawOver(c, parent, state);
        int topChildPosition = parent.getChildAdapterPosition(parent.getChildAt(0));

        if(topChildPosition == 3) {
            Log.i("TAG", "draw header");
            TextView textView = new TextView(parent.getContext());
            textView.setText("bbdasdasd");
            textView.setBackgroundColor(Color.RED);
            textView.layout(0, 0, 100, 100);
            drawText(c, textView);
        }
    }

    private void drawText(Canvas c, View header) {
        c.save();
        c.translate(0, 0);
        header.draw(c);
        c.restore();
    }
}

mRecyclerView.addItemDecoration(new HeaderItemDecoration());

我在工作,但问题是如果我继续滚动,这个 TextView 就会消失。如何让这个View在我画完之后一直可见?任何帮助或建议将不胜感激。

只需更改if条件:

if(topChildPosition == 3) {
    ...
}

至:

if(topChildPosition >= 3) {
    ...
}

因此,如果您继续向下滚动,视图将保持可见。

如果你希望即使你滚动回到顶部它仍然可见,只需添加一个成员变量来记住视图是否已显示,如果已显示,请继续绘制它。