lj *_*ang 39 android android-recyclerview
我使用Recyclerview替换列表视图我想保持Recyclerview始终滚动到底部.
ListView可以使用此方法 setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL)
RecyclerView我用的方法 smoothScrollToPosition(myAdapter.getItemCount() - 1)
但是当软键盘弹出时,它取代了RecyclerView的内容.
Kir*_*kov 43
如果你想保持滚动位置固定在底部RecyclerView
,它在聊天应用程序中很有用.只需调用setStackFromEnd(true)
以LinearLayoutManager
使键盘保持列表项固定在底部(键盘)而不是顶部.
yig*_*git 36
这是因为RV认为它的参考点是TOP,当键盘出现时,RV的大小由父级更新,RV保持其参考点稳定.(从而将顶部位置保持在同一位置)
您可以将LayoutManager#ReverseLayout设置为true,在这种情况下,RV将从适配器的末尾布置项目.
例如,适配器位置0位于底部,1位于其上方等...
这当然要求您颠倒适配器的顺序.
我不确定但是从最后设置堆栈也可能会给你相同的结果,无需重新排序你的适配器.
我遇到了同样的问题,我使用这里提到的方法解决了它。用于检测软键盘是否打开,如果打开则调用该smoothScrollToPosition()
方法。
一个更简单的解决方案是为您的活动的根视图提供一个已知 ID,例如“@+id/activityRoot”,将 GlobalLayoutListener 挂钩到 ViewTreeObserver 中,然后从那里计算您的活动的视图根和窗口大小之间的大小差异:
final View activityRootView = findViewById(R.id.activityRoot);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100) {
recyclerView.smoothScrollToPosition(myAdapter.getItemCount() - 1);
}
}
});
Run Code Online (Sandbox Code Playgroud)
简单!
recyclerView.scrollToPosition(getAdapter().getItemCount()-1);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38230 次 |
最近记录: |