【问题标题】:How to make the Floating Action Button scroll off the screen or disappear如何使浮动操作按钮滚出屏幕或消失
【发布时间】:2015-09-29 03:40:56
【问题描述】:

我见过一些带有 RecyclerView 和浮动操作按钮的应用程序,当您向下滚动 RecyclerView 时,浮动操作按钮将从底部滚动或最小化并消失。我使用设计支持库在 CoordinatorLayout 中创建了 RecyclerView 和 FloatingActionButton。但是当我滚动时 FloatingActionButton 没有做任何事情。有没有办法在布局 XML 文件中添加一个属性来实现这一点,或者我可以写一些 Java 代码来做到这一点?如何?

【问题讨论】:

标签: android android-layout material-design


【解决方案1】:

为此,您必须创建自定义 RecyclerView.OnScrollListener 类..

这就是我所做的。

public abstract class HidingScrollListener extends
    RecyclerView.OnScrollListener {
private static final int HIDE_THRESHOLD = 20;
private int scrolledDistance = 0;
private boolean controlsVisible = true;

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);

    if (scrolledDistance > HIDE_THRESHOLD && controlsVisible) {
        onHide();
        controlsVisible = false;
        scrolledDistance = 0;
    } else if (scrolledDistance < -HIDE_THRESHOLD && !controlsVisible) {
        onShow();
        controlsVisible = true;
        scrolledDistance = 0;

    }

    if ((controlsVisible && dy > 0) || (!controlsVisible && dy < 0)) {
        scrolledDistance += dy;
    }
}

public abstract void onHide();

public abstract void onShow();

在你的 MainActivity 中

rv.setOnScrollListener(new HidingScrollListener() {

        @Override
        public void onShow() {
            fam.animate().translationY(0)
                    .setInterpolator(new DecelerateInterpolator(2)).start();
        }

        @Override
        public void onHide() {
            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) fam
                    .getLayoutParams();
            int fabMargin = lp.bottomMargin;
            fam.animate().translationY(fam.getHeight() + fabMargin)
                    .setInterpolator(new AccelerateInterpolator(2)).start();
        }
    });

rv 是您的 RecyclerView,fam 是您的 FAB。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2018-10-21
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多