我有一个片段,其中有RecyclerView
with LinearLayoutManager
其中有CardView
项目。有一个浮动操作按钮,单击该按钮,项目将滚动到顶部。我尝试过使用scrollToPosition
也scrollToPositionWithOffset
with RecyclerView
并且还与LinearLayoutManager
如下所示。但它根本没有任何作用。为什么会这样呢?谁能帮我一下。
我已经放置了RecyclerView
直接在里面SwipeRefreshView
在 xml 文件中。我正在打电话setFloatingActionButton
一旦将适配器设置为RecyclerView
.
public void setFloatingActionButton(final View view) {
float = (android.support.design.widget.FloatingActionButton) getActivity().findViewById(R.id.float);
float.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRecyclerView.smoothScrollToPosition(0);
android.support.design.widget.Snackbar.make(view, "Scrolled to Top", android.support.design.widget.Snackbar.LENGTH_SHORT)
.setAction("Ok", new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayoutManager llm = (LinearLayoutManager) mRecyclerView.getLayoutManager();
llm.scrollToPosition(0);
}
})
.setActionTextColor(getActivity().getResources().getColor(R.color.coloLink))
.show();
}
});
}
继续上述评论,理想情况下,替换
mRecyclerView.smoothScrollToPosition(0);
in the onClick
浮动操作按钮的
mLayoutManager.scrollToPositionWithOffset(0, 0);
应该管用。您还可以删除SnackBar
代码,因为你根本不需要它。所以,总而言之,你的上述方法应该看起来像
public void setFloatingActionButton(final View view) {
float actionButton = (android.support.design.widget.FloatingActionButton) getActivity()
.findViewById(R.id.float);
actionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView
.getLayoutManager();
layoutManager.scrollToPositionWithOffset(0, 0);
}
});
}
如果你说上面的方法不起作用,那么测试一下是否onClick()
甚至是否被调用。尝试在其中添加一条日志消息并查看是否打印出来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)