如何在协调器父级滚动Recycler视图上显示/隐藏FAB

Zah*_*.HY 7 android floating-action-button android-recyclerview recyclerview-layout

我有一个协调器layout.inside活动的活动有一个片段与Recycler视图和浮动按钮.我可以显示/隐藏浮动按钮当Scroll Recycler查看并避免使用fab行为?!

在活动布局中:CoordinatorLayout -----> AppBarLayout ---->工具栏和FrameLayout以及底栏视图

在片段布局中:RelativeLayout ----> Recycler视图和float按钮

我想实现像Google+主页这样的内容.我该如何实现这种情况?


临时我用这个解决方案解决了我的问题:

使用我的片段中的接口的活动协调器布局和使用fab行为显示/隐藏fab ...直到我找到更好的解决方案!

Lea*_*ira 18

这段代码工作得很好:

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

                    super.onScrolled(recyclerView, dx, dy);
                }
            });
Run Code Online (Sandbox Code Playgroud)

你做不到:

app:layout_anchor="@id/listView"
app:layout_anchorGravity="bottom|end"
Run Code Online (Sandbox Code Playgroud)

这里:

根据此Google帖子,CoordinatorLayout没有内置支持与ListView一起使用.


Ang*_*Koh 5

我修改了Leondro的方法,以便FAB在滚动时隐藏,并在滚动停止时显示.

scrollListener = new RecyclerView.OnScrollListener() {  
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        switch (newState) {
            case RecyclerView.SCROLL_STATE_IDLE:
                fab.show();
                break;
            default:
                fab.hide();
                break;
        }
        super.onScrollStateChanged(recyclerView, newState);
    }
}; 

rv.clearOnScrollListeners();
rv.addOnScrollListener(scrollListener);
Run Code Online (Sandbox Code Playgroud)


M_r*_*000 5

您可以在浮动操作按钮中添加此属性:

应用程序:layout_behavior =“@ string / hide_bottom_view_on_scroll_behavior”