Android HorizontalScrollView disable scrolling

前端 未结 2 833
闹比i
闹比i 2020-12-20 18:27

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?

相关标签:
2条回答
  • 2020-12-20 18:37

    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>
    
    0 讨论(0)
  • 2020-12-20 18:47

    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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题