Android 如何使浮动操作按钮从屏幕上滚动或消失

Android 如何使浮动操作按钮从屏幕上滚动或消失,android,android-layout,material-design,Android,Android Layout,Material Design,我见过一些带有RecyclerView和浮动操作按钮的应用程序,当你向下滚动RecyclerView时,浮动操作按钮将从底部滚动,或者只是最小化并消失。我使用设计支持库在Coordinator布局中创建了一个RecyclerView和一个FloatingActionButton。但是当我滚动时,floatingAction按钮不起任何作用。有没有办法在布局XML文件中添加一个属性来实现这一点,或者我可以编写一些Java代码来实现这一点?怎么做 为此,您必须创建自定义的RecyclerView.O

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

为此,您必须创建自定义的
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();
其中,
rv
将是您的
RecyclerView
fam
将是您的工厂


希望它能对您有所帮助。

为此,您必须创建自定义的
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();
其中,
rv
将是您的
RecyclerView
fam
将是您的工厂

希望能对你有所帮助。

你是说这样?你是说像这样?