滚动后,RecyclerView onDrawOver视图消失

时间:2017-07-28 02:44:53

标签: android android-recyclerview item-decoration

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

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将会消失。在绘制之后如何使这个视图始终可见?任何帮助或建议都将非常感激。

enter image description here

1 个答案:

答案 0 :(得分:2)

只需更改if条件:

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

到:

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

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

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