我有一个包含图片和聊天视图的自定义第一行(标题)的recyclerview。
如果我使用stackfrombottom并且有许多聊天消息按预期工作,则最后一个聊天项目在底部可见,向上滚动它会滚动到图像的开头,如下图所示:
问题:如果聊天消息不多,则图像位于recyclerview的中心(因为从底部堆叠),如下所示:
如果不重新排列listview之外的标题,是否可以修复此问题?就像在第三张图片中一样:
答案 0 :(得分:0)
回答自己的问题:
在这里,我找到了一个项目装饰的提示,它只需要标题并改变第一行:
我用这个灵感的代码:
public class StickySummaryDecoration extends RecyclerView.ItemDecoration {
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
int childCount = parent.getAdapter().getItemCount();
int lastVisibleItemPosition =
((LinearLayoutManager) parent.getLayoutManager()).findLastVisibleItemPosition();
int firstVisiblePosition =
((LinearLayoutManager) parent.getLayoutManager())
.findFirstCompletelyVisibleItemPosition();
if ((firstVisiblePosition == 0) && (lastVisibleItemPosition == (childCount - 1))) {
View summaryView = parent.getChildAt(0);
summaryView.setY(0);
} else {
parent.getChildAt(0).setVisibility(View.VISIBLE);
}
}
}
在Recyclerview上:
recyclerView.addItemDecoration(new StickySummaryDecoration(), 0);