是否有与ListView相同的RecyclerView transcriptMode alwaysScroll?

时间:2015-01-28 01:41:16

标签: android android-recyclerview

使用ListView,我可以通过设置:

轻松实现自动滚动聊天视图
android:transcriptMode="alwaysScroll"

在其XML中。在RecyclerView中是否有相应的产品?

http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:transcriptMode

2 个答案:

答案 0 :(得分:3)

RecyclerView似乎没有这个选项。 你必须手动滚动。 做点什么......

notifyItemInserted(int posn);
recyclerView.smoothScrollToPosition(la.getItemCount()); // <= use this.

也是void notifyItemInserted(int posn);是最后的。所以你不能覆盖它总是在那里滚动。

你需要创建一个方法,你可以调用与上面代码类似的东西。

另外请记住,平滑滚动有点儿。如果您有许多元素(例如1000个元素)并且想要滚动很长的距离,那么滚动将永远存在。我发现有一个教程解决了这个问题,并解释了如何解决这个问题。 http://blog.stylingandroid.com/scrolling-recyclerview-part-1/

享受,

答案 1 :(得分:2)

就我而言,我将OnLayoutChangeListener添加到RecyclerView,因为当隐藏或显示键盘时,RecyclerView的最低位置将会更改。像这样的代码:

recyclerView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight,
            int oldBottom) {
        if (bottom < oldBottom) {
            recyclerView.post(new Runnable() {
                @Override
                public void run() {
                    recyclerView.scrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
                }
            });
        }
    }
});

它与android:transcriptMode="alwaysScroll"设置为ListView的工作方式相同。