带有标题图像stackfrombottom的Recyclerview有条件地

时间:2015-08-31 08:11:13

标签: android android-recyclerview

我有一个包含图片和聊天视图的自定义第一行(标题)的recyclerview。

如果我使用stackfrombottom并且有许多聊天消息按预期工作,则最后一个聊天项目在底部可见,向上滚动它会滚动到图像的开头,如下图所示:

enter image description here

问题:如果聊天消息不多,则图像位于recyclerview的中心(因为从底部堆叠),如下所示:

enter image description here

如果不重新排列listview之外的标题,是否可以修复此问题?就像在第三张图片中一样:

enter image description here

1 个答案:

答案 0 :(得分:0)

回答自己的问题:

在这里,我找到了一个项目装饰的提示,它只需要标题并改变第一行:

Is it possible to have the last item in a RecyclerView to be docked to the bottom if there is no need to scroll?

我用这个灵感的代码:

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);