【问题标题】:handling scrolling in android scrollview在 android scrollview 中处理滚动
【发布时间】:2015-08-11 20:09:41
【问题描述】:

我正在使用this library 在我的android 应用程序中创建一个浮动操作按钮。我需要的是在我向下滚动时隐藏浮动操作按钮,并在我向上滚动时再次显示它。问题是我有一个FrameLayout 和一个不包含setOnScrollListener()ScrollView

我读过this solution,但据说它很滞后。

谁能告诉我如何在不损失性能的情况下获得我正在寻找的功能?

【问题讨论】:

    标签: android android-scrollview floating-action-button


    【解决方案1】:

    Try this library.

    它提供了一个浮动操作按钮,当您向下滚动时会消失 :-)

    【讨论】:

      【解决方案2】:

      一种选择是创建一个具有滚动监听器的 ObservableScrollView。 Google 在 IOSched14 应用程序中使用了这种方法。创建它的一种方法可能是:

      public class ObservableScrollView extends ScrollView {
          private boolean mScrollingEnabled = true;
          private ArrayList<Callbacks> mCallbacks = new ArrayList<Callbacks>();
      
          public ObservableScrollView(Context context, AttributeSet attrs) {
              super(context, attrs);
          }
      
          @Override
          protected void onScrollChanged(int l, int t, int oldl, int oldt) {
              super.onScrollChanged(l, t, oldl, oldt);
              for (Callbacks c : mCallbacks) {
                  c.onScrollChanged(l - oldl, t - oldt);
              }
          }
      
          @Override
          public int computeVerticalScrollRange() {
              return super.computeVerticalScrollRange();
          }
      
          public void addCallbacks(Callbacks listener) {
              if (!mCallbacks.contains(listener)) {
                  mCallbacks.add(listener);
              }
          }
      
          public static interface Callbacks {
              public void onScrollChanged(int deltaX, int deltaY);
          }
      
      
      
          public void setScrollingEnabled(boolean scrollingEnabled) {
              mScrollingEnabled = scrollingEnabled;
          }
      
      //    @Override
      //    public boolean onTouchEvent(MotionEvent ev) {
      //        if (!mScrollingEnabled) return false;
      //        return super.onTouchEvent(ev);
      //    }
      
      }
      

      只需添加它而不是您的 ScrollView,然后使用 addCallbacks 方法附加一个侦听器:

      ObservableScrollView scrollView = new ObservableScrollView(context);
      scrollView.addCallbacks(this);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多