2

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

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如果我继续滚动,这将消失。绘制后如何使此视图始终可见?任何帮助或建议将不胜感激。

在此处输入图像描述

4

1 回答 1

2

只需更改 if 条件:

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

至:

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

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

如果您希望它在滚动回顶部时仍保持可见,只需添加一个成员变量以记住视图是否已显示,如果已显示,请继续绘制它。

于 2017-07-28T03:11:08.110 回答