How to scroll an image horizontally?
<p>I have a problem with horizontal scroll view.</p>

<p>This is my XML code:</p>

<pre><code>    &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relative_layout_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    tools:context=".MainActivity" &gt;

    &lt;TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/home_title_id"
        android:text="@string/home_title"
        android:layout_marginTop="@dimen/forty_text_size"
        android:textColor="@android:color/white"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:textSize="@dimen/forty_text_size" /&gt;

    &lt;LinearLayout
        android:id="@+id/linear_layout_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/home_title_id"&gt;

        &lt;HorizontalScrollView
            android:id="@+id/horizontal_view_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" &gt;

            &lt;ImageView
                android:id="@+id/home_image_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/abc" /&gt;
        &lt;/HorizontalScrollView&gt;

         &lt;/LinearLayout&gt;
        &lt;/RelativeLayout&gt;
</code></pre>

<p>In my Java class, extending activity I have declared all the widgets, then i created a class scrollview, extending horizontal scroll view.</p>

<p>The Java code is as follows:</p>

<pre><code>class scrollview extends HorizontalScrollView 
    {
        private static final int SWIPE_MIN_DISTANCE = 5;
        private static final int SWIPE_THRESHOLD_VELOCITY = 300;
        private ArrayList mItems = null;
        private GestureDetector mGestureDetector;
        private int mActiveFeature = 0;


        public scrollview(Context context) 
        {
            super(context);
        }

        public void setFeatureItems(ArrayList items)
        {
            LinearLayout internalWrapper = new LinearLayout(getContext());
            internalWrapper.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            internalWrapper.setOrientation(LinearLayout.HORIZONTAL);
            addView(internalWrapper);
            this.mItems = items;
            for(int i = 0; i&lt; items.size();i++)
            {
                LinearLayout featureLayout = (LinearLayout) View.inflate(this.getContext(),R.layout.activity_main,null);
                //...
              //Create the view for each screen in the scroll view
                //...
                internalWrapper.addView(featureLayout);
            }
            setOnTouchListener(new View.OnTouchListener() 
            {
                @Override
                public boolean onTouch(View v, MotionEvent event) 
                {
                    //If the user swipes
                    if (mGestureDetector.onTouchEvent(event)) 
                    {
                        return true;
                    }
                    else if(event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL )
                    {
                        int scrollX = getScrollX();
                        int featureWidth = v.getMeasuredWidth();
                        mActiveFeature = ((scrollX + (featureWidth/2))/featureWidth);
                        int scrollTo = mActiveFeature*featureWidth;
                        smoothScrollTo(scrollTo, 0);
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            });
            mGestureDetector = new GestureDetector(new MyGestureDetector());
        }
            class MyGestureDetector extends SimpleOnGestureListener 
            {
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
            {
                try 
                {
                    //right to left
                    if(e1.getX() - e2.getX() &gt; SWIPE_MIN_DISTANCE &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) 
                    {
                        int featureWidth = getMeasuredWidth();
                        mActiveFeature = (mActiveFeature &lt; (mItems.size() - 1))? mActiveFeature + 1:mItems.size() -1;
                        smoothScrollTo(mActiveFeature*featureWidth, 0);
                        return true;
                    }
                    //left to right
                    else if (e2.getX() - e1.getX() &gt; SWIPE_MIN_DISTANCE &amp;&amp; Math.abs(velocityX) &gt; SWIPE_THRESHOLD_VELOCITY) 
                    {
                        int featureWidth = getMeasuredWidth();
                        mActiveFeature = (mActiveFeature &gt; 0)? mActiveFeature - 1:0;
                        smoothScrollTo(mActiveFeature*featureWidth, 0);
                        return true;
                    }
                } catch (Exception e) {
                        Log.e("Fling", "There was an error processing the Fling event:" + e.getMessage());
                }
                return false;
            }
        }
    }
</code></pre>

<p>But nothing happens, please help.</p>

<p><strong>ORWILL IT BE BETTER TO  HAVE THE SCROLL CLASS IN THE ONTOUCH LISTNER FUNCTION???</strong></p>
