Disable Scrollview Action
Solution 1:
This might be a bit late but I ran into the same problem so my solution is similar to above, had to disable the OnTouchListener as follows:
// Get the ScrollViewfinalScrollViewmyScroll= (ScrollView) findViewById(R.id.display_scrollview);
// Disable Scrolling by setting up an OnTouchListener to do nothing
myScroll.setOnTouchListener( newOnTouchListener(){
@OverridepublicbooleanonTouch(View v, MotionEvent event) {
returntrue;
}
});
// Enable Scrolling by removing the OnTouchListner
tvDisplayScroll.setOnTouchListener(null);
Solution 2:
This is a bit late, but an even easier way is to just get your parent ViewGroup
and call requestDisallowInterceptTouchEvent(true)
on it. This causes not only the immediate parent (scroll view) but any other parent objects that might intercept the touch to ignore it for the duration of the particular event. This is great when you have a draggable child AND draggable parent, and want to disable parent dragging while the child is being dragged.
It's also a more general solution than specifically disabling the scroll view. If you re-use your draggable child view somewhere else, it will still work: You don't need to know the scroll view's ID. Code that's re-usable without modification is always good.
Solution 3:
If anyone's using Android L or later and overriding onTouch
and onInterceptTouchEvent
isn't working:
try overriding onStartNestedScroll
and return false
.
There is also a new XML attribute nestedScrollingEnabled
, but it seems like it has to be on the View that is leaking the scroll event, rather than on the ScrollView being affected by the leak, or anywhere in the layout hierarchy between them. So if you don't know in advance what child ScrollViews you might have, overriding onStartNestedScroll
for the affected ScrollView is the way to go.
Post a Comment for "Disable Scrollview Action"