使用ListView,我可以通过设置:
轻松实现自动滚动聊天视图android:transcriptMode="alwaysScroll"
在其XML中。在RecyclerView中是否有相应的产品?
http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:transcriptMode
答案 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
的工作方式相同。