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) {
...
}
Таким образом, вид останется видимым, если вы продолжите прокручивать вниз.
Если вы хотите, чтобы он оставался видимым, даже если вы прокрутите страницу вверх, просто добавьте переменную-член, чтобы запомнить, если вид уже показан, если он показан, продолжайте рисовать его.