private void AddScrollListener(ViewGroup vg, bool setForTop, bool setForBottom) { if ((!setForBottom && mTopOnScrollChangedListener == null || (setForBottom && mBottomOnScrollChangedListener == null))) { ViewTreeObserver.IOnScrollChangedListener onScrollChangedListener = new DelegateScrollChangeListener { ScrollChanged = () => { bool hasButtons = false; foreach (MDButton button in mButtons) { if (button != null && button.Visibility != ViewStates.Gone) { hasButtons = true; break; } } if (vg is WebView) { InvalidateDividersForWebView((WebView)vg, setForTop, setForBottom, hasButtons); } else { InvalidateDividersForScrollingView(vg, setForTop, setForBottom, hasButtons); } Invalidate(); } }; if (!setForBottom) { mTopOnScrollChangedListener = onScrollChangedListener; vg.ViewTreeObserver.AddOnScrollChangedListener(mTopOnScrollChangedListener); } else { mBottomOnScrollChangedListener = onScrollChangedListener; vg.ViewTreeObserver.AddOnScrollChangedListener(mBottomOnScrollChangedListener); } onScrollChangedListener.OnScrollChanged(); } }