RecyclerView onDrawOver 视图在滚动后消失
RecyclerView onDrawOver view disappear after scroll
我想在滚动到某个位置(例如:3)后在 RecyclerView
上显示一个视图(例如 TextView
),所以我使用
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
就会消失。如何让这个View在我画完之后一直可见?任何帮助或建议将不胜感激。
只需更改if条件:
if(topChildPosition == 3) {
...
}
至:
if(topChildPosition >= 3) {
...
}
因此,如果您继续向下滚动,视图将保持可见。
如果你希望即使你滚动回到顶部它仍然可见,只需添加一个成员变量来记住视图是否已显示,如果已显示,请继续绘制它。
我想在滚动到某个位置(例如:3)后在 RecyclerView
上显示一个视图(例如 TextView
),所以我使用
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
就会消失。如何让这个View在我画完之后一直可见?任何帮助或建议将不胜感激。
只需更改if条件:
if(topChildPosition == 3) {
...
}
至:
if(topChildPosition >= 3) {
...
}
因此,如果您继续向下滚动,视图将保持可见。
如果你希望即使你滚动回到顶部它仍然可见,只需添加一个成员变量来记住视图是否已显示,如果已显示,请继续绘制它。