【问题标题】:How to hide floating action button in the top recycler view and show when scroling down?如何隐藏顶部回收器视图中的浮动操作按钮并在向下滚动时显示?
【发布时间】:2020-01-17 22:02:05
【问题描述】:

我试图仅在 Recycler 视图向下滚动时显示一个浮动操作按钮,并在位置位于最顶部时隐藏。对不起,我的英语很糟糕

【问题讨论】:

标签: java android


【解决方案1】:
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx,int dy){
        super.onScrolled(recyclerView, dx, dy);

        if (dy >0) {
            // Scroll Down
            if (fab.isShown()) {
                fab.hide();
            }
        }
        else if (dy <0) {
            // Scroll Up
            if (!fab.isShown()) {
                fab.show();
            }
        }
     }
})

【讨论】:

    【解决方案2】:

    这里你可以做些什么来识别滚动状态

     recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
    
                if (!recyclerView.canScrollVertically(1) && newState==RecyclerView.SCROLL_STATE_IDLE) {
    
                   //do what you want if recyclerview scrolled to bottom
                }else{
    
                    //do what you want if recyclerview not scrolled to bottom
                }
            }
        });
    

    【讨论】:

      【解决方案3】:

      为 recylerview 添加滚动监听器并在滚动时隐藏 fab

       fun hideFabWhenScroll(fab: FloatingActionButton, recyclerView: RecyclerView){
          recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
              override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                  if (dy > 0 || dy < 0 && fab.isShown) {
                      fab.hide()
                  }
              }
      
              override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
                  if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                      fab.show()
                  }
      
                  super.onScrollStateChanged(recyclerView, newState)
              }
          })
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        • 2015-02-15
        相关资源
        最近更新 更多