Android Can';t手柄在水平滚动视图的滚动条上单击

Android Can';t手柄在水平滚动视图的滚动条上单击,android,Android,我在水平滚动视图中有一个网格布局,我正在尝试为滚动视图实现一个自定义滚动条,到目前为止,我能够自定义滚动条的用户界面[thumb and seekbar]还可以设置永久可见性。但问题是,我无法处理scrollview滚动条上的事件。如果用户在滚动条上单击,滚动视图应滚动至50%,依此类推。如单击第一个量化器滚动视图应滚动25% 如果我制作了自己的seekbar并将其绑定到scroll view,这将非常简单,它还为我提供了自己的方法和单击事件,并可以创建对象。但是我想用ScrollView的滑块

我在水平滚动视图中有一个网格布局,我正在尝试为滚动视图实现一个自定义滚动条,到目前为止,我能够自定义滚动条的用户界面[thumb and seekbar]还可以设置永久可见性。但问题是,我无法处理scrollview滚动条上的事件。如果用户在滚动条上单击,滚动视图应滚动至50%,依此类推。如单击第一个量化器滚动视图应滚动25%

如果我制作了自己的seekbar并将其绑定到scroll view,这将非常简单,它还为我提供了自己的方法和单击事件,并可以创建对象。但是我想用ScrollView的滑块来做。如何处理ScrollView的滚动条点击,我可以创建ScrollView类的对象。但它将如何控制seekbar??我没有用于水平滚动视图的onseekbarchangelistner,也没有返回任何achild视图或滚动条视图。而且它的搜索栏不可点击

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbarThumbHorizontal="@drawable/scrollbar_horizontal_thumb"
        android:scrollbarTrackHorizontal="@drawable/scrollbar_horizontal_track"
        android:visibility="visible" 
        android:fadeScrollbars="false"
        android:id="@+id/scrollView">

        <android.support.v7.widget.GridLayout
            android:id="@+id/grid"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:columnCount="18"
            android:orientation="horizontal"
            android:rowCount="1" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_blue_bright"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/darker_gray"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_green_light"
                android:padding="10dp"
                android:text="Hi"
                android:textSize="16sp" />
        </android.support.v7.widget.GridLayout>
    </HorizontalScrollView>

</RelativeLayout>

很抱歉发布此答案太晚:

要做的是:扩展一个水平滚动视图并覆盖一个方法onScrollChanged,然后得到两个坐标x1和x2。只需将指示x轴上滚动距离的实时值x1传递给seekbar setProgress(x1)方法。确保首先设置seebar的最大值[setMax()],该值等于scrollView的最大可滚动长度

public class mHorizontalScrollView extends HorizontalScrollView{
    private float   progress =  0.0f;
    private SeekBar mSeekBar = null;
    private MyActivityClass  mObj    = null;
    private float xMax       =  0.0f;



    public mHorizontalScrollView(Context context, SeekBar sBar) 
    {
        super(context);
        mObj            =   (MyActivityClass) context; //or just use a Static reference
        mSeekBar        =   sBar;
    }

    @Override
    protected void onScrollChanged(int x, int y, int oldX, int oldY) {
        // TODO Auto-generated method stub
        int myX         =   x;
        if(xMax == 0)
        {
         xMax = mObj.getMaxScrollWidth(); //Choose Your own Scrollable width or length
         mSeekBar.setMax(Math.round(xMax));
        }

         mSeekBar.setProgress(myX); 
         super.onScrollChanged(x, y, oldX, oldY);
    }

}
它工作得完美无缺。现在,要在滚动条和水平滚动条上实现反向滚动,滚动视图应与seekbar正确同步:

在主活动类中使用以下代码:

    seek_bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) 
        {
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar)
        {
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {

            int currScrollPosX  =   progress;
            mHSCV.scrollTo(progress , 0);
           // mHSCV is object of mHorizontalScrollView Class

    });
}

问候。

发布您的代码…Jayant您找到答案了吗?