gpt4 book ai didi

android - 使用 LinearLayoutManager 在 RecyclerView 中滚动到顶部

转载 作者:IT王子 更新时间:2023-10-28 23:41:00 27 4
gpt4 key购买 nike

我有一个 fragment ,其中有 RecyclerViewLinearLayoutManager,其中有 CardView 项。单击项目应滚动到顶部有一个 float 操作按钮。我已经尝试使用 scrollToPosition 以及 scrollToPositionWithOffsetRecyclerView 以及 LinearLayoutManager,如下所示。但它根本没有效果。为什么会这样?谁能帮帮我。

我已将 RecyclerView 直接放在 xml 文件中的 SwipeRefreshView 内。只要将适配器设置为 RecyclerView,我就会调用 setFloatingActionButton

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

onClick 的 float Action 按钮上加上

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() 是否被调用。尝试在其中添加一条日志消息,看看是否打印出来。

关于android - 使用 LinearLayoutManager 在 RecyclerView 中滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159724/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com