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
时间: 2024-10-08 18:11:36