RecyclerView onDrawOver вид исчезают после прокрутки

Я хочу отобразить вид (пример 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 пропадет, если я продолжу прокручивать. Как сделать этот вид всегда видимым после его отрисовки? Любая помощь или предложение будет с благодарностью.

1 ответ

Решение

Просто измените условие if:

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

чтобы:

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

Таким образом, вид останется видимым, если вы продолжите прокручивать вниз.

Если вы хотите, чтобы он оставался видимым, даже если вы прокрутите страницу вверх, просто добавьте переменную-член, чтобы запомнить, если вид уже показан, если он показан, продолжайте рисовать его.

Другие вопросы по тегам