I have HorizontalScrollView with long view as a child, so HorizontalScrollView is scrollable and can scroll its child horizontally. Is there any possibility to block that? I don't want user to be able to scroll the view.
2 Answers
My suggestion is to use an OnTouchListener, for example:
In onCreate Method
HorziontalScrollView scrollView= (HorizontalScrollView)findViewById(R.id.scrollView); scrollView.setOnTouchListener(new OnTouch()); And has a class:
private class OnTouch implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { return true; } } 1 Comment
void
That saved my day! Actually, i spent a hour looking how to disable small scrolling in TabLayout. But i completely forgot that it's kind of scrollview! That works in my case as well.
Ok, I found the way how to implement that.
Just need to create my own HorizontalScrollView and override onTouchEvent method
public class MyHSV extends HorizontalScrollView { public MyHSV(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } public MyHSV(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public MyHSV(Context context) { super(context); init(context); } void init(Context context) { // remove the fading as the HSV looks better without it setHorizontalFadingEdgeEnabled(false); setVerticalFadingEdgeEnabled(false); } @Override public boolean onTouchEvent(MotionEvent ev) { // Do not allow touch events. return false; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // Do not allow touch events. return false; } } And then in the xml file
<pathToClass.MyHSV xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_parent" android:scrollbars="none" android:id="@+id/myHSV> </pathToClass.MyHSV>