将浮动操作按钮保持在布局上方
Keep Floating Actionbutton above Layout
如何在向下滚动时将 FloatingActionbutton 保持在 "blue bottom bar" 上方?条形图是我的 Fragment 的最后一个元素,所以它只需要向上移动几个 dp。
行为应该类似于 Snackbar 行为。
假设 BottomBar 的 ViewHolder 与 Recycler 视图适配器中的其他项目不同。只要 BottomBar 的 viewholder 在 onBindViewHolder 方法中被调用,您就可以创建一个与 FAB 通信的接口。如果是,它会触发,其他一些方法会检查最后一个可见位置是否等于 BottomBar 的位置
例如。
您的适配器
public class SomeAdapter extends extends RecyclerView.Adapter<SomeAdapter.ViewHolder>{
OnBottomBarBinned onBottomBarBinned;
public interface OnBottomBarBinned{
void binned();
}
public SomeAdapter(OnBottomBarBinned onBottomBarBinned){
this.onBootmBarBinned = onBottomVarBinned;
}
public static class Viewholder extends RecyclerView.Adapter{
ViewHolder(View v){
super(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder,int position){
if(viewHolder.item.getViewId()==R.id.yourBottomBarId){
onBottomBarBinned.binned();
}}
}
}
然后在连接适配器时
yourRecyclerView.setAdapter(new SomeAdapter(new OnBottomBarBinned(){
void binned(){
if(yourLayoutManager.findLastVisiblePosition==bottomBarPosition){
yourFab.setTranslationY(someDp);
}
else{
yourFab.setTranslationY(0);
}
}});
您使用的是 FrameLayout/ CoordinatorLayout 吗?如果您在 XML 中将 FAB 声明保持在底栏上方,这应该很容易完成。
如何在向下滚动时将 FloatingActionbutton 保持在 "blue bottom bar" 上方?条形图是我的 Fragment 的最后一个元素,所以它只需要向上移动几个 dp。
行为应该类似于 Snackbar 行为。
假设 BottomBar 的 ViewHolder 与 Recycler 视图适配器中的其他项目不同。只要 BottomBar 的 viewholder 在 onBindViewHolder 方法中被调用,您就可以创建一个与 FAB 通信的接口。如果是,它会触发,其他一些方法会检查最后一个可见位置是否等于 BottomBar 的位置 例如。
您的适配器
public class SomeAdapter extends extends RecyclerView.Adapter<SomeAdapter.ViewHolder>{
OnBottomBarBinned onBottomBarBinned;
public interface OnBottomBarBinned{
void binned();
}
public SomeAdapter(OnBottomBarBinned onBottomBarBinned){
this.onBootmBarBinned = onBottomVarBinned;
}
public static class Viewholder extends RecyclerView.Adapter{
ViewHolder(View v){
super(v);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder,int position){
if(viewHolder.item.getViewId()==R.id.yourBottomBarId){
onBottomBarBinned.binned();
}}
}
}
然后在连接适配器时
yourRecyclerView.setAdapter(new SomeAdapter(new OnBottomBarBinned(){
void binned(){
if(yourLayoutManager.findLastVisiblePosition==bottomBarPosition){
yourFab.setTranslationY(someDp);
}
else{
yourFab.setTranslationY(0);
}
}});
您使用的是 FrameLayout/ CoordinatorLayout 吗?如果您在 XML 中将 FAB 声明保持在底栏上方,这应该很容易完成。