2017-07-28 63 views
0

后我想显示的位置滚动后视图(实施例TextView)在RecyclerView(例如:3),所以我使用RecyclerView onDrawOver视图中消失滚动

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

只要改变,如果条件:

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

到:

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

所以,如果你继续向下滚动视图将保持可见。

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

+0

非常感谢。我明白它为什么会消失 –

相关问题