feat(android-scrollview): add isScrollEnabled property (#150)

This commit is contained in:
Manol Donev
2018-11-30 17:14:49 +02:00
committed by GitHub
parent ce45e75d2b
commit 5e681a0fc0
2 changed files with 59 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ import android.graphics.Rect;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
@@ -26,6 +27,7 @@ public class HorizontalScrollView extends android.widget.HorizontalScrollView {
private int scrollableLength = 0;
private SavedState mSavedState;
private boolean isFirstLayout = true;
private boolean scrollEnabled = true;
/**
* True when the layout has changed but the traversal has not come through yet.
@@ -48,6 +50,33 @@ public class HorizontalScrollView extends android.widget.HorizontalScrollView {
return this.scrollableLength;
}
public boolean getScrollEnabled() {
return this.scrollEnabled;
}
public void setScrollEnabled(boolean value) {
this.scrollEnabled = value;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// Do nothing with intercepted touch events if we are not scrollable
if (!this.scrollEnabled) {
return false;
}
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!this.scrollEnabled && ev.getAction() == MotionEvent.ACTION_DOWN) {
return false;
}
return super.onTouchEvent(ev);
}
@Override
public void requestLayout() {
this.mIsLayoutDirty = true;

View File

@@ -8,6 +8,7 @@ import android.content.Context;
import android.graphics.Rect;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -26,6 +27,7 @@ public class VerticalScrollView extends ScrollView {
private int scrollableLength = 0;
private SavedState mSavedState;
private boolean isFirstLayout = true;
private boolean scrollEnabled = true;
/**
* True when the layout has changed but the traversal has not come through yet.
@@ -48,6 +50,33 @@ public class VerticalScrollView extends ScrollView {
return this.scrollableLength;
}
public boolean getScrollEnabled() {
return this.scrollEnabled;
}
public void setScrollEnabled(boolean value) {
this.scrollEnabled = value;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// Do nothing with intercepted touch events if we are not scrollable
if (!this.scrollEnabled) {
return false;
}
return super.onInterceptTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!this.scrollEnabled && ev.getAction() == MotionEvent.ACTION_DOWN) {
return false;
}
return super.onTouchEvent(ev);
}
@Override
public void requestLayout() {
this.mIsLayoutDirty = true;