How to disable ScrollView scrolling?

后端 未结 3 1096
南方客
南方客 2020-12-06 06:10

Trying to resolve this issue : How to disable pullToRefreshScrollView from listening to touch I am wondering it there is a solution, to block ScrollView from handling onTouc

3条回答
  •  感动是毒
    2020-12-06 06:43

    Create a custom ScrollView and use it wherever you wants.

    class CustomScrollView extends ScrollView {
    
        // true if we can scroll the ScrollView
        // false if we cannot scroll 
        private boolean scrollable = true;
    
        public void setScrollingEnabled(boolean scrollable) {
            this.scrollable = scrollable;
        }
    
        public boolean isScrollable() {
            return scrollable;
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            switch (ev.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    // if we can scroll pass the event to the superclass
                    if (scrollable) return super.onTouchEvent(ev);
                    // only continue to handle the touch event if scrolling enabled
                    return scrollable; // scrollable is always false at this point
                default:
                    return super.onTouchEvent(ev);
            }
        }
    
        @Override
        public boolean onInterceptTouchEvent(MotionEvent ev) {
            // Don't do anything with intercepted touch events if 
            // we are not scrollable
            if (!scrollable) return false;
            else return super.onInterceptTouchEvent(ev);
        }
    
    }
    

    This can be use in layout

    
    
    
    

    Then invoke

    ((CustomScrollView )findViewById(R.id.scrollView)).setIsScrollable(false);
    

提交回复
热议问题