ScrollView 设置滚动是否可用

extends:http://stackoverflow.com/questions/5763304/disable-scrollview-programmatically , http://stackoverflow.com/questions/18893198/how-to-disable-and-enable-the-scrolling-on-android-scrollview

 

import android.content.Context;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.widget.ScrollView;



public class LockableScrollView extends ScrollView {



    // true if we can scroll (not locked)

    // false if we cannot scroll (locked)

    private boolean mScrollable = true;



    public LockableScrollView(Context context, AttributeSet attrs, int defStyle) {

        super(context, attrs, defStyle);

    }



    public LockableScrollView(Context context, AttributeSet attrs) {

        super(context, attrs);

    }



    public LockableScrollView(Context context) {

        super(context);

    }



    public void setScrollingEnabled(boolean enabled) {

        mScrollable = enabled;

    }



    public boolean isScrollable() {

        return mScrollable;

    }



    @Override

    public boolean onTouchEvent(MotionEvent ev) {

        switch (ev.getAction()) {

            case MotionEvent.ACTION_DOWN:

                // if we can scroll pass the event to the superclass

                if (mScrollable) return super.onTouchEvent(ev);

                // only continue to handle the touch event if scrolling enabled

                return mScrollable; // mScrollable 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 (!mScrollable) return false;

        else return super.onInterceptTouchEvent(ev);

    }



}

 

// "com.example.demo" replace with your packagename



<com.example.demo.CustomScrollView

        android:id="@+id/myScroll"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" >

    </com.example.demo.CustomScrollView>
In your Activity



CustomScrollView myScrollView = (CustomScrollView) findViewById(R.id.myScroll);

        myScrollView.setEnableScrolling(false); // disable scrolling

        myScrollView.setEnableScrolling(true); // enable scrolling

 

你可能感兴趣的:(scrollview)