gpt4 book ai didi

java - 在 RecyclerView 中的指定元素上显示 float 操作按钮

转载 作者:行者123 更新时间:2023-11-29 04:30:29 25 4
gpt4 key购买 nike

我试图仅在滚动到 recyclerView 的特定元素时才显示 fab。这是我的布局,我为了缩短目的考虑了所有的东西。所以我希望它在 2、3、3... 项上显示 fab,而不在我的 RecyclerView 的零项和第一项上显示它。

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout">

<android.support.v7.widget.Toolbar
android:id="@+id/details_toolbar"/>

<include layout="@layout/divider" />

</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
android:id="@+id/topic_content_recycler"/>

<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"/>
</android.support.design.widget.CoordinatorLayout>

我发现的是在滚动时隐藏fab,看起来像这样:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy){
if (dy > 0)
fabAddNew.hide();
else if (dy < 0)
fabAddNew.show();
}
});

我想要写得很好的解决方案。 (我假设有一个,由谷歌提供,但我不能资助它)谢谢。

最佳答案

添加 RecyclerView.OnScrollListener 并使用 onScrollStateChanged(RecyclerView recyclerView, int newState) 回调给你新状态,你应该使用 SCROLL_STATE_IDLE 来获取它position. 这意味着位置改变了并且滚动停止了,现在你可以借助这个来检查哪个项目是可见的

recyclerView.getLayoutManager().findFirstVisibleItemPosition();

现在你可以使用下面的代码并相应地改变它

   recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy > 0) {
// Scrolling up
} else {
// Scrolling down
}
}

@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);

if (newState == AbsListView.OnScrollListener. SCROLL_STATE_IDLE) {
//you can change the position according to your need
if(recyclerView.getLayoutManager().findFirstVisibleItemPosition()<2)
{
fabAddNew.hide();
}
else{
fabAddNew.show();
}
}
}
});

您可以阅读文档 here for more detail

关于java - 在 RecyclerView 中的指定元素上显示 float 操作按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974306/

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