我已经看到一些带有RecyclerView和浮动操作按钮的应用程序,当您向下滚动RecyclerView时,浮动操作按钮将从底部滚动或只是最小化并消失。我使用设计支持库在CoordinatorLayout中创建了一个RecyclerView和一个FloatingActionButton。但是当我滚动时,FloatingActionButton并没有做任何事情。有没有办法在布局XML文件中添加一个属性来实现这一点,或者我可以写一些Java代码来做到这一点?如何?
答案 0 :(得分:4)
为此,您必须创建自定义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
将成为您的FAB。
希望它会对你有所帮助。